Code Monkey home page Code Monkey logo

advpl-regex's Introduction

AdvPl RegEx

Implementação de RegEx em AdvPl

Projeto criado por Thiago Oliveira Santos em Setembro de 2013 e disponibilizado no Google Code.


As seguintes funcionalidades estão disponíveis até o momento:

Classes de caracteres:

As classes de caracteres podem ser tanto as padrões (\w, \d, etc...) como personalizadas

Quantificadores:

?, +, *, {m,n}, {,m}, {m,}

Boundaries:

^ : Somente como marcador de início de texto

$ : Somente como marcador de final de texto

Agrupamentos:

( ) : Suporta captura de grupo que pode ser omitida por "?:"

Captura de grupos:

Quando utilizadas recursivamente dentro do regexp, deve-se usar \1 e \2 Em expressões de output para substituição, pode-se adicionalmente usar a expressão (m,n), que servirá para pegar a ocorrência n do grupo m.

Grupos nomeados:

Um agrupamento pode ser nomeado com o seguinte termo no início do grupo: ?<nome>

Igualmente, para fazer referência a um grupo pelo nome em operações de Transform e Replace, deve-se utilizar a seguinte sintaxe: \<nome>

Também é possível referenciar a ocorrência, da seguinte forma: \<nome,numerodaocorrencia>

Dois grupos podem ter o mesmo nome e, se for o caso, serão tratados como o mesmo agrupamento em operações de captura, inclusive o índice será o mesmo, isto é, se eu tiver apenas dois grupos, os dois terem o mesmo nome e eu usar a referência \1, esta referência retornará informação que pode ter sido capturada por qualquer um dos grupos. A não ser no caso de grupos com mesmo nome, o índice não é alterado.

Pattern "OU" ( | pipe)

O "ou" consiste em determina duas ou mais patterns aceitáveis para um texto procurado Exemplo: \w+on|\w+re|\w+la|\w+go

A Pattern acima procura por sequências de texto e número que terminem com on, re, la e go. Palavras como thiago e sala seriam encontradas com este pattern. No caso, sala poderia ser encontrada até dentro de salada, já que não há nenhum padrão que defina que o caracter seguinte ao texto encontrado não pode ser uma letra.

Exemplos de utilização:

RegEx para captura ou validação de e-mail [\w-\._\+%]+@(?:[\w-]+\.)+[\w]{2,6}

RegEx para captura ou validação de IPv4 (?:(2(?:[0-4]\d|5[0-5])|[01]?\d?\d)\.){3}(?:(2(?:[0-4]\d|5[0-5])|[01]?\d?\d))

RegEx para captura de campos de um texto CSV, delimitado por , e com qualificador de texto " (?:("(?:[^"]|"")+"|[^",\n\r]++)[,\n\r]?)+

advpl-regex's People

Contributors

farenheith avatar tgmti avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.