O que é uma expressão correta? Uma expressão regular é uma combinação de caracteres específicos e predefinidos que compõem um conjunto de regras de seqüência de caracteres para expressar uma lógica de filtragem de seqüência de caracteres.
给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
可以通过正则表达式,从字符串中获取我们想要的特定部分。
Para facilitar a aprendizagem, recomendo o Regextor, um software de verificação de expressões regulares, que pode ser encontrado no meu artigo, que também tem uma lista de bons softwares para Mac.

Uma expressão regular pode conter apenas texto comum, representando uma correspondência precisa com este texto. Por exemplo:
A expressão legal é:song
O texto é de Xiaosongge.
Resultado da comparação: xiaosongge,xiaoSongge
As expressões regulares são maiúsculas por padrão, então a song não corresponde a “Song”. No entanto, a maioria das implementações de expressões regulares oferece uma opção para que as minúsculas não sejam maiúsculas.
. é usado para combinar um caracter arbitrário, como:
Expressões regulares: c.t
Cat cet caaat dog (em inglês)
Resultado da comparação:cat cet caaat dog
Análise: c.t corresponde a uma sequência de caracteres que começa com “c” e termina com “t”, com um caracter arbitrário no meio.
Simultaneamente, várias sequências. podem ser combinadas com várias sequências de caracteres arbitrários:
Expressões regulares: c..t
Cat cet caat dog - Wikipédia, a enciclopédia livre
Resultado da correspondência: cat cet caat dog
. contém um significado especial na expressão regular, é um caracter especial. .\ também é um caracter especial, pode ser usado como tradução para caracteres especiais. Se você quiser corresponder a um verdadeiro “ . ” caracteres, é necessário adicionar \ para tradução de caracteres..O símbolo . “ representa o verdadeiro . “
Expressões regulares: c.t
Texto em espera de correspondência: cat c.t dog
Resultado da correspondência: catc.t dog
Nota: Como \ também é um caracter especial, é necessário usar duas linhas de contraste para que um verdadeiro \ seja correspondido.\:
Expressões regulares: c\t
Esperando por uma correspondência de texto: cat c\t dog
Resultado da correspondência: catc\t dog
Isso é o que eu disse acima. Eu posso combinar um caractere qualquer, mas se eu quiser combinar alguns caracteres específicos?[E [caracteres meta].
Expressões regulares: c[ab]t
Cat cbt cet - Wikipédia, a enciclopédia livre
Resultado da comparação:cat cbt cet
Análise:[ab] vai corresponder a a ou b. Então c[ab]t combina com “cat” e “cbt” e não com “cet”.
No exemplo acima, se eu quisesse fazer uma correspondência entre cet, em[Então, se eu quisesse combinar qualquer letra minúscula, eu escreveria dezenas de letras minúsculas? Isso é bom, mas é muito longo.[a-z]:
Expressões regulares: c[a-z]t
Para correspondência: cat cbt czt c2t
Resultado da comparação:cat cbt czt c2t
Análise: c[a-z]t representa uma letra arbitrária das letras “a” - “z” que começa com “c” e termina com “t”.
Outras faixas semelhantes:
[0-9] e[A função é a mesma que 0123456789] . [A-F] corresponde a letras maiúsculas de A a F。 [A-Z] corresponde a todas as letras maiúsculas de A a Z. [a-z] corresponde a todos os caracteres em letras minúsculas de a a z. [A-z] corresponde a todos os caracteres do ASCII A ao ASCII z, não apenas a todos os caracteres, mas também a todos os caracteres da tabela ASCII A ao z, como[E ^ etc) [[A-Za-z0-9] Corresponde a todas as letras e números em minúsculas.
Os conjuntos de caracteres são geralmente usados para especificar um conjunto de caracteres que precisam ser combinados. Mas, às vezes, você deseja excluir um conjunto de caracteres que você não deseja combinar. Isso pode ser feito pela negação do conjunto de caracteres.
Expressões regulares: c[^a-z]t
Texto para correspondência: cat cbt czt c2t cAt
Resultado da correspondência: cat cbt cztc2t cAt
Análise: Este é o oposto do exemplo anterior.[[a-z] corresponde a todas as letras minúsculas, enquanto [a-z] corresponde a todas as letras minúsculas.[^a-z] Combina todos os caracteres que não são minúsculas。
Observe que o caractere ^ desmatcha todos os caracteres do conjunto de caracteres.
Os caracteres meta têm um significado especial em expressões regulares, já falamos sobre alguns caracteres meta, como por exemplo.[E] ◦ Estes caracteres não podem expressar o seu significado diretamente, por exemplo, não podem ser usados diretamente[“para se encaixar”.[“Usar. para combinar”.
Todos os caracteres meta podem ser precedidos por uma tradução em linha inversa, que, quando traduzida, corresponde a si mesmo e não ao seu significado especial. Por exemplo,[“Este é o meu primeiro jogo.[ “:
Expressões regulares: a[b
Texto a corresponder: a[b ab a[[b
Resultado da comparação:a[b ab a[[b
Nota: \ é usado como um caracteres meta, o que também significa que \ também é um caracteres meta. Portanto, se for necessário para combinar com o verdadeiro “\”, pode ser usado\:
Expressões regulares: a\b
Texto a corresponder: a\b a\b a[[b
Resultado da correspondência: a\b a\b a[[b
Às vezes, você pode precisar de coincidir com caracteres em branco que não podem ser impressos no texto. Por exemplo, você pode querer encontrar todos os caracteres Tab, ou todos os caracteres de substituição. Você pode usar os caracteres especiais da tabela a seguir:

Por exemplo, \r\n irá corresponder a uma combinação de troca de rotação, representando uma troca de linha de arquivo no Windows. Em sistemas Linux e Unix, apenas é necessário usar \n.
Existem alguns caracteres meta especiais que podem ser usados para combinar conjuntos de caracteres comuns. Estes caracteres meta são chamados de classes de caracteres de correspondência. Você encontrará muito conveniente usá-los.
Número de correspondência ou não Como já foi dito,[0-9] pode ser combinado com todos os números. Se você não quiser combinar nenhum número, você pode usar[A tabela abaixo apresenta uma lista de caracteres de classes numéricas e não numéricas:

Expressões regulares: c\dt
Texto para correspondência: cat c2t czt c9t
Resultado da correspondência: catc2t czt c9t
Expressões regulares: c\Dt
Texto para correspondência: cat c2t czt c9t
Resultado da comparação:cat c2t czt c9t
Combinar caracteres alfabéticos e não alfabéticos
Outro metacaráter de classe comum é \w e \W:

Expressões regulares: c\wt
Escreve-se “cat”
Resultado da comparação:cat c2t c-t c\t
Expressões regulares: c\Wt
Esperando por uma correspondência
Resultado da correspondência: cat c2tc-t c\t
Combinação de espaços em branco e não em branco
A última correspondência que encontramos é uma classe em branco:

Expressões regulares: c\st
Esperando por uma correspondência
Resultado da correspondência: catc t c2t c\t
Expressões regulares: c\St
Esperando por uma correspondência
Resultado da comparação:cat c t c2t c\t
O símbolo + representa a correspondência de um ou mais caracteres. Por exemplo, a corresponde a “a”, e a+ corresponde a uma ou mais “a”.
Expressão formal: cat
“CAT CAAT CAAAT” (em inglês)
Resultado da correspondência: ctcat caat caaat
Expressão regular: ca+t
“CAT CAAT CAAAT” (em inglês)
Resultado da correspondência: ctcat caat caaat
Quando o + é usado em um conjunto de caracteres, o símbolo + deve ser colocado fora do conjunto:
Expressões regulares: c[0-9]+t
Texto a ser correspondido: ct c0t cat c123t
Resultado da correspondência: ctc0t cat c123t
Análise: c[0-9]+t representa uma sequência de caracteres que começa com “c” e termina com “t”, com um ou mais números no meio.
Claro que sim.[0-9+] também é uma expressão regular legal, mas representa um conjunto de caracteres que contém os símbolos “0” - “9” e “+”.
Em geral, os caracteres meta, como . e +, são usados como significados literais quando usados em conjuntos de caracteres, portanto, não há necessidade de tradução.[0-9+] e[0-9+A função é a mesma.
Nota: + é um caractere meta, e “+” precisa ser traduzido+。
Se você quiser combinar zero ou mais caracteres, você pode usar*Caracteres iniciais
Expressões regulares: ca*t
Para correspondência: ct cat caat cbt
Resultado da comparação:ct cat caat cbt
Perceber:*O símbolo é um caracteres meta. Para poder corresponder a “ * “, é necessário fazer uma tradução.*。
Assim, ? é muito apropriado para combinar um caractere selecionado em um texto.
Expressação formal: ca?t
Para correspondência: ct cat caat cbt
Resultado da comparação:ct cat caat cbt
Observação: o símbolo ? é um caractere inicial. Para poder corresponder ao ?, é necessário traduzir.?。
As expressões regulares permitem especificar o número de vezes que a correspondência deve ser feita. O número de vezes pode ser especificado entre { e } . Nota: { e } também são caracteres maiúsculos, que precisam ser traduzidos quando usados em sentido literal.
Número exato de correspondências Para especificar o número de correspondências, você pode inserir um número entre { e }. Por exemplo, { 3 } irá corresponder a 3 caracteres ou conjuntos anteriores:
Expressão regular: ca{3}t
Para correspondência: ct cat caaat cbt
Resultado da correspondência: ct catcaaat cbt
Número mínimo de correspondências
Também podemos especificar apenas o mínimo de correspondência. Por exemplo, {2,} significa correspondência 2 ou mais vezes:
Expressão regular: ca{1,}t
Para correspondência: ct cat caaat cbt
Resultado da correspondência: ctcat caaat cbt
Correspondência entre dimensões
Também podemos usar valores mínimos e máximos para determinar o número de correspondências. Por exemplo, {2,3} significa um mínimo de 2 correspondências e um máximo de 3 correspondências.
Expressão regular: ca{2,3}t
Para correspondência: ct cat caaat cbt
Resultado da correspondência: ct catcaaat cbt
Então? e a função de {0,1} é a mesma coisa que a função de {1,}
Veja os exemplos a seguir:
Expressão regular: s.*g (em inglês) Resultado da comparação: xiao song xiao song Análise: s.*Ao invés de combinar duas “songs” como se esperava, o g combinou todos os textos entre a primeira “s” e a última “g”.
Isso é porque*e + são correspondências gananciosas. Ou seja, as expressões regulares sempre procuram a correspondência maior, e não a menor, o que é intencional.
Mas se você não quer uma correspondência gananciosa, use a correspondência não gananciosa das palavras-chave (matar o mínimo possível de caracteres). A palavra não gananciosa é adicionada depois da palavra-chave?:

*Sim? Não.*A versão não-comprometida, portanto, pode ser usada.*Para modificar o exemplo acima:
Expressão regular: s.?g
(em inglês)
Resultado da comparação: xiaosong xiao song
Análise: pode-se ver s.?g corresponde a duas “canções” 。
Os caracteres meta que correspondem aos limites das strings são ^ e $, usados no início e no fim da string respectivamente.
↑ Usado da seguinte forma:
Expresso regular: ^ xiao
(em inglês)
Resultado da comparação:xiaosong
O texto foi publicado no blog oficial da empresa, a “Axiaosong”. Resultados da comparação: axiaosong Análise: ^xiao corresponde a uma sequência de caracteres que começa com “xiao”.
$ é usado da seguinte forma:
Expressão legal: song$
(em inglês)
Resultado da comparação: xiaosong
(em inglês) Resultado da comparação: xiaoosonga Análise: song$ corresponde a uma sequência de caracteres que termina em “song”
Compartilhamento:
Expressão regular: ^[0-9a-zA-Z]{4,}$
Texto a corresponder: a1b234ABC
Resultado da comparação:a1b234ABC
Texto a corresponder: + a1b23=4ABC Resultado depois de combinar: + a1b23=4ABC Análise:[0-9a-zA-Z]{4,}$ correspondem a uma sequência de números ou letras, e o número de dígitos é maior que ou igual a quatro dígitos。
Nota: ^ se estiver no início do conjunto, significa negativo; se estiver fora do conjunto, corresponde à posição inicial da string.[^0-9] e ^[Diferenças entre 0-9]
No entanto, pode-se usar o modo multilineo. No modo multilineo, o motor de expressões regulares usa o trocador de linha como separador da string. ^ corresponde ao início do texto ou ao início de uma linha, enquanto $ corresponde ao fim do texto ou ao fim de uma linha.
Modifique o exemplo anterior:
A expressão regular é:[0-9a-zA-Z]{4,}$
Texto a corresponder: a1b234ABC +a1b23=4ABC ABC123456
Resultado da comparação:a1b234ABC
+a1b23=4ABC
ABC123456
Análise:[0-9a-zA-Z]{4,}$ vai para correspondência de cada linha com números ou letras, e o número de dígitos é maior do que igual a quatro dígitos.
Observação: Se for usado o modo de múltiplas linhas, o ponto m deve ser colocado no início da expressão regular. (?m) não é suportado na maioria das implementações de expressões regulares. Algumas implementações de expressões regulares também suportam o uso do início de uma string correspondente a A e o fim de uma string correspondente a Z. Se for suportado, o função desses caracteres é a mesma que a de ^, $.
Traduzido do japonês por iOS_小松哥