c regex tutorial regular expressions c with examples
O Tutorial sobre expressões regulares C ++ ou Regex explica o trabalho de regex em C ++, incluindo a funcionalidade de correspondência de regex, pesquisa, substituição, validação de entrada e tokenização:
Expressão regular ou regexes ou regexp, como são comumente chamados, são usados para representar um determinado padrão de string ou texto. Regexes são freqüentemente usados para denotar uma sintaxe textual padrão de uma string.
=> Visite aqui para ver a série de treinamento C ++ para todos.
Cada caractere em uma expressão regular possui um caractere com significado literal ou um “metacaractere” que possui um significado especial.
Por exemplo , uma expressão regular 'a (a-z)' pode ter valores ‘aa’, ‘ab’, ’ax’ etc. Aqui, a tem um significado literal e (a-z) denota qualquer caractere minúsculo de a a z.
Claro, o exemplo acima é o mais simples. Podemos ter uma expressão regular com padrões mais complexos para corresponder.
Quase todas as linguagens de programação fornecem suporte para regexes. C ++ tem suporte direto para regexes do C ++ 11 em diante. Além das linguagens de programação, a maioria dos programas de processamento de texto, como lexers, editores de texto avançados, etc. usam regexes.
Neste tutorial, exploraremos os detalhes de regexes em geral, bem como em relação à programação C ++.
O que você aprenderá:
- Expressão regular (regex) em C ++
- Modelos de função usados em C ++ regex
- Validação de entrada C ++
- Conclusão
Expressão regular (regex) em C ++
Uma expressão regular ou regex é uma expressão que contém uma sequência de caracteres que definem um padrão de pesquisa específico que pode ser usado em algoritmos de pesquisa de string, algoritmos de localização ou localização / substituição etc. Regexes também são usados para validação de entrada.
A maioria das linguagens de programação fornece recursos integrados para regex ou por meio de bibliotecas. Do C ++ 11 em diante, C ++ fornece suporte a regex por meio da biblioteca padrão por meio do cabeçalho.
Um processador de regex usado para analisar uma regex a traduz em uma representação interna que é executada e comparada com uma string que representa o texto que está sendo pesquisado. C ++ 11 usa a gramática ECMAScript como a gramática padrão para regex. ECMAScript é simples, mas fornece recursos poderosos de regex.
Vamos ver alguns dos padrões que especificamos no regex, como especificação de intervalo, padrões repetidos, etc.
Especificações de alcance
Especificar um intervalo de caracteres ou literais é um dos critérios mais simples usados em uma regex.
Por exemplo, podemos especificar um intervalo de letras minúsculas de a a z da seguinte maneira:
(a-z)
Isso corresponderá exatamente a um caractere minúsculo.
Os seguintes critérios,
(A-Za-z0-9)
A expressão acima especifica o intervalo que contém um único caractere maiúsculo, um caractere minúsculo e um dígito de 0 a 9.
Os colchetes (()) nas expressões acima têm um significado especial, ou seja, são usados para especificar o intervalo. Se você quiser incluir um colchete como parte de uma expressão, será necessário escapar dele.
Então, a seguinte expressão,
( (0-9)
A expressão acima indica um colchete de abertura e um dígito no intervalo de 0 a 9 como um regex.
Mas observe que, como estamos programando em C ++, precisamos usar a sequência de escape específica do C ++ da seguinte maneira:
(\ (0-9)
Padrão Repetido
Os exemplos de intervalo que especificamos acima correspondem a apenas um caractere ou literal. Se quisermos combinar mais de um caractere, geralmente especificamos o “modificador de expressão” junto com o padrão, tornando-o um padrão repetido.
Um modificador de expressão pode ser “+” que sugere corresponder a ocorrência de um padrão uma ou mais vezes ou pode ser “*” que sugere corresponder a ocorrência de um padrão zero ou mais vezes.
Por exemplo,a seguinte expressão,
(a-z) + corresponde a strings como a, aaa, abcd, softwaretestinghelp, etc. Observe que nunca corresponderá a uma string em branco.
A expressão,
(a-z) * corresponderá a uma string em branco ou a qualquer uma das strings acima.
Se quiser especificar um grupo de caracteres para corresponder uma ou mais vezes, você pode usar os parênteses da seguinte forma:
(Xyz) +
A expressão acima corresponderá a Xyz, XyzXyz e XyzXyzXyz, etc.
Exemplo de regex C ++
Considere uma expressão regular que corresponda a um nome de arquivo do MS-DOS, conforme mostrado abaixo.
char regex_filename() = “(a-zA-Z_) (a-zA-Z_0-9)*\.(a-zA-Z0-9)+”;O regex acima pode ser interpretado da seguinte forma:
Corresponde a uma letra (minúscula e depois maiúscula) ou um sublinhado. Em seguida, combine zero ou mais caracteres, em que cada um pode ser uma letra, um sublinhado ou um dígito. Em seguida, combine um ponto literal (.). Após o ponto, combine um ou mais caracteres, em que cada um pode ser uma letra ou um dígito indicando a extensão do arquivo.
Modelos de função usados em C ++ regex
Vamos agora discutir alguns dos modelos de função importantes durante a programação de regex em C ++.
regex_match ()
Este modelo de função é usado para corresponder ao padrão fornecido. Esta função retorna verdadeiro se a expressão fornecida corresponder à string. Caso contrário, a função retorna falso.
A seguir está um exemplo de programação C ++ que demonstra a função regex_match.
#include #include #include using namespace std; int main () { if (regex_match ('softwareTesting', regex('(soft)(.*)') )) cout Resultado:

No programa acima, primeiro, comparamos a string “softwareTesting” com a expressão regular “(“ (soft) (. *) ”Usando a função regex_match. Posteriormente, também demonstramos diferentes variações de regex_match, passando um objeto de string, alcance, etc.
regex_search ()
A função regex_search () é usada para pesquisar um padrão na string que corresponda à expressão regular.
Considere o seguinte programa C ++ que mostra o uso de regex_search ().
#include #include #include using namespace std; int main() { //string to be searched string mystr = 'She sells_sea shells in the sea shore'; // regex expression for pattern to be searched regex regexp('s(a-z_)+'); // flag type for determining the matching behavior (in this case on string objects) smatch m; // regex_search that searches pattern regexp in the string mystr regex_search(mystr, m, regexp); cout<<'String that matches the pattern:'< Resultado:

Especificamos uma string e, em seguida, uma expressão regular usando o objeto regex. Esta string e regex são passadas para a função regex_search junto com o tipo de sinalizador smatch. A função procura a primeira ocorrência de padrão na string de entrada e retorna a string correspondente.
regex_replace ()
A função regex_replace () é usada para substituir o padrão correspondente a uma expressão regular por uma string.
Vamos usar um programa C ++ para demonstrar a função regex_replace ().
#include #include #include #include using namespace std; int main() { string mystr = 'This is software testing Help portal
'; cout<<'Input string: '< Resultado:

Aqui, temos uma string de entrada. Fornecemos uma expressão regular para corresponder a uma string começando com ‘p’. Em seguida, substituímos a palavra correspondente pela palavra 'website'. Em seguida, substituímos a palavra ‘site’ de volta ao portal.
Validação de entrada C ++
Discutimos os principais modelos de função que são usados para correspondência de padrões usando regex. É notável que o objetivo principal do regex é a validação de entrada. Você pode validar a entrada inserida de um dispositivo de entrada padrão usando a expressão regex.
Verifique o programa abaixo para demonstrar como você pode usar o regex para validar os dados recebidos.
#include #include #include using namespace std; int main() { string input; regex integer_expr('(\+|-)?((:digit:))+'); //As long as the input is correct ask for another number while(true) { cout<>input; if(!cin) break; //Exit when the user inputs q if(input=='q') break; if(regex_match(input,integer_expr)) cout<<'Input is an integer'< Resultado:

Este programa corresponde à entrada inserida pelo usuário para validar se é um número inteiro. A saída acima mostra que quando um inteiro é inserido, ele fornece uma mensagem apropriada e quando qualquer outro dado é inserido, ele fornece a mensagem como entrada inválida.
amostra de plano de teste para teste de software
Conclusão
Regex é usado em mecanismos de pesquisa para pesquisar padrões, pesquisar e substituir diálogos de aplicativos como processadores de texto e editores de texto. Regex também é usado em utilitários UNIX como sed, awk, bem como na análise lexical do programa.
Vimos as funções que são usadas para combinar, pesquisar e substituir padrões neste tutorial. Usando essas funções, podemos basicamente desenvolver um aplicativo eficiente que implementa a funcionalidade desejada usando regex.
O Regex permite validar com eficiência a entrada ou pesquisa e substituir uma string por padrão de patch e isso pode ser feito usando poucas linhas de código C ++.
Leia também => Tutorial de expressão regular Java
=> Verifique TODOS os tutoriais em C ++ aqui.
Leitura recomendada
- MongoDB Regular Expression $ regex com Exemplo
- Tutorial Python DateTime com exemplos
- Como usar expressões regulares Unix
- Tutorial de comprimento de array Java com exemplos de código
- Tutorial de script do Unix Shell com exemplos
- Tutorial de fragmentação do MongoDB com exemplo
- Selenium Encontrar Elemento por Tutorial de Texto com Exemplos
- Tutorial de Pipes Unix: Pipes em Programação Unix



