O que é uma expressão regular? A expressão normal é uma combinação de caracteres específicos pré-definidos que formam um conjunto de regras de string que são usadas para expressar uma lógica de filtragem de strings.
A expressão regular pode ser usada para:
给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
可以通过正则表达式,从字符串中获取我们想要的特定部分。
Para facilitar a aprendizagem, recomendo o Regextor, um software de verificação de expressões normais, que pode ser consultado neste artigo, que também recomenda muitos bons softwares para Mac.
A expressão normal pode conter apenas texto comum, representando um correspondente exato; por exemplo:
A expressão normal é:song
Textos em espera de correspondência: xiao songge, xiao songge
Resultado da correspondência: xiaosong
Ge, xiao Songge
As expressões regulares são escritas de forma maiúscula por padrão, por isso a song não corresponde a
. Usado para corresponder a um caracter arbitrário, por exemplo:
A expressão normal: c.t.
Texto para correspondência: cat cet caaat dog
Os resultados após a correspondência:cat
cet
Caat Dog
Análise: c.t é correspondida a uma string que começa com "c" e termina com "t", com o meio como um caracter arbitrário.
同理,多个连续的.可以匹配多个连续的任意字符:
A expressão normal: c...t
Texto para correspondência: cat cet caat dog
Resultado da correspondência: cat cetcaat
Cão
. contém um significado especial na expressão regular e é um caractere especial..\ também é um caractere especial, que pode desempenhar um papel de tradução em caracteres especiais.....................................................................................................................................................................................................................
A expressão normal: c.t.
Esperando correspondência: cat c.t dog
Resultado da correspondência: catc.t
Cão
Nota: Como \ também é um caractere especial, para corresponder a um caractere "\" real, é necessário usar dois contra-silencos \:
A expressão normal: c\t
Textos em espera de correspondência: cat c\t dog
Resultado da correspondência: catc\t
Cão
Como dito acima. Pode-se combinar um caracteres arbitrário, mas e se eu quiser combinar vários caracteres específicos? Para combinar um conjunto específico de caracteres, pode-se usar [e] metacaracteres.
A expressão normal é: c[ab]t
Esperando correspondência
Os resultados após a correspondência:cat
cbt
cet
Análise: [ab] corresponde a "a
No exemplo acima, e se eu quiser combinar cet e adicionar um em [?], então se eu quiser combinar letras minúsculas arbitrárias, eu escrevo dezenas?
A expressão normal é: c[a-z]t
Textos para correspondência: cat cbt czt c2t
Os resultados após a correspondência:cat
cbt
czt
c2t
Análise: c[a-z]t indica que começa com "c
O blog também tem um espaço similar:
[0-9] é a mesma função que [0123456789]. [A-F] corresponde aos caracteres maiúsculos de A a F. [A-Z] Compare todos os caracteres em maiúsculas de A a Z. [a-z] corresponde a todos os caracteres em minúsculas de a a z. [A-z] corresponde a todos os caracteres do ASCII A ao ASCII z ((não apenas corresponde a todos os caracteres, mas também corresponde a caracteres do ASCII A ao z, como [ e ^, etc.)). [A-Za-z0-9] Compare todas as letras maiúsculas e números.
Os conjuntos de caracteres são geralmente usados para especificar um conjunto de caracteres que precisam ser correspondidos. Mas, às vezes, você deseja excluir um conjunto de caracteres que você não deseja combinar. Isso pode ser feito por meio da negação do conjunto de caracteres.
A expressão normal é: c[^a-z]t
Textos para correspondência: cat cbt czt c2t cAt
Resultado da correspondência: cat cbt cztc2t
cAt
Análise: Este é o contrário do exemplo anterior. ▲[a-z] corresponde a todos os caracteres em minúscula, enquanto [^a-z] corresponde a todos os caracteres não em minúscula. ▲
Observe que o caracter ^ é um desmatamento de todos os caracteres do conjunto de caracteres.
Os caracteres de base têm significados especiais na expressão regular, onde já dissemos alguns caracteres de base, como., [e]. Estes caracteres não podem expressar diretamente o seu significado, por exemplo, não podem ser usados diretamente [para combinar " [
Todos os meta-caracteres podem ser precedidos por uma inversão de tração, quando a inversão é feita, o caractere irá corresponder a si mesmo e não ao seu significado especial. Por exemplo, [ vai corresponder a " [ ":
A expressão normal é: a[b]
Textos em espera de correspondência: a[b ab a[[b
Os resultados após a correspondência:a[b
Ab a [[b]]
Observação: \ é usado para transformar caracteres meta, o que também significa \ também é um meta caráter. Por isso, se você precisa combinar um verdadeiro \, pode usar \:
A expressão normal: a\b
Texto a ser correspondido: a\b a\b a[[b
Resultado após correspondência: a\ba\b
a[[b
Às vezes, você pode precisar de corresponder a caracteres em branco que não podem ser impressos no texto. Por exemplo, você deseja encontrar todos os caracteres de Tab ou todos os caracteres de substituição.
Por exemplo, \r\n irá corresponder a uma combinação de trocas de linhas de volta, representando uma mudança de linha de arquivo no Windows. No Linux e Unix, basta usar \n.
Existem alguns metatarsos especiais que podem ser usados para combinar conjuntos de caracteres comuns. Estes metatarsos são chamados de classes de caracteres de correspondência. Você vai achar muito conveniente usá-los.
Combinação numérica ou não numérica Como mencionado acima,[0-9] pode ser combinado com todos os números. Se você não quiser combinar com nenhum número, você pode usar [^0-9].
A expressão normal: c\dt
Textos em espera de correspondência: cat c2t czt c9t
Resultado da correspondência: catc2t
cztc9t
A expressão normal é: c\Dt
Textos para correspondência: cat c2t czt c9t
Os resultados após a correspondência:cat
c2tczt
c9t
Compare caracteres alfanuméricos e não alfanuméricos
Outro caracteres de classe que são usados são \w e \W:
A expressão normal é: c\wt
Textos em espera de correspondência: cat c2t czt c-t c\t
Os resultados após a correspondência:cat
c2t
Não, não.
A expressão normal é: c\Wt
Textos em espera de correspondência: cat c2t c-t c\t
Resultado da correspondência: cat c2tc-t
c\t
Compare espaços e não espaços
A última classe de correspondência a ser encontrada é a classe em branco:
A expressão normal: c\st
Textos em espera de correspondência: cat c t c2t c \ t
Resultado da correspondência: catc t
C2t c\ t
A expressão normal é: c\St
Textos em espera de correspondência: cat c t c2t c \ t
Os resultados após a correspondência:cat
c tc2t
c\t
Os caracteres + indicam a correspondência de um ou mais caracteres. Por exemplo, a irá corresponder a "a", e a + irá corresponder a um ou mais "a".
A expressão normal é: cat
Texto em espera de correspondência: ct cat caat caaat
Resultado de correspondência: ctcat
Caat Caat
A expressão normal: ca + t
Textos em espera de correspondência: ct cat caat caaat
Resultado de correspondência: ctcat
caat
caaat
Quando o + é usado em um conjunto de caracteres, é necessário colocar o símbolo + fora do conjunto:
A expressão normal é: c[0-9] + t
Textos em espera de correspondência: ct c0t cat c123t
Resultado de correspondência: ctc0t
gatoc123t
Análise: c[0-9]+t representa uma cadeia de caracteres que começa com "c" e termina com "t", com um ou mais números no meio.
Claro, [0-9+] também é uma expressão regular válida, mas representa um conjunto de caracteres que contém os símbolos "0" - "9" e "+".
Em geral, meta-caracteres como. e + são usados como significados literais quando são usados em conjuntos de caracteres, portanto não é necessário traduzi-los. Mas não há problema em traduzi-los, então, [0-9+] e [0-9+] funcionam da mesma forma.
Nota: + é um metacaracter, correspondendo a "+" requer o uso de uma tradução +。
Se você quiser combinar zero ou mais caracteres, use o * meta caráter.
A expressão normal: ca*t
Textos em espera de correspondência: ct cat caat cbt
Os resultados após a correspondência:ct
cat
caat
cbt
Observação: * O símbolo é um metacaracter.
? pode corresponder a zero ou a um caracteres.
A expressão normal é: ca?t
Textos em espera de correspondência: ct cat caat cbt
Os resultados após a correspondência:ct
cat
Caat cbt
Nota:? símbolos são meta-caracteres.? para ser capaz de combinar "? ", é necessário fazer a transformação?.
A expressão normal permite especificar o número de vezes em que a correspondência ocorre. O número pode ser especificado entre os eixos
Número exato de correspondências Para especificar o número de vezes que você deve corresponder, você pode inserir um número entre { e }; por exemplo, {3} irá corresponder aos caracteres ou conjuntos que aparecem 3 vezes antes:
A expressão normal: ca{3}t
Textos em espera de correspondência: ct cat caaat cbt
Resultado da correspondência: ct catcaaat
cbt
Pelo menos o número de vezes
Também podemos especificar apenas o valor mínimo para a correspondência. Por exemplo, {2,} significa correspondência 2 ou mais vezes:
A expressão normal é: ca{1,}t
Textos em espera de correspondência: ct cat caaat cbt
Resultado de correspondência: ctcat
caaat
cbt
Compatibilidade entre intervalos decimais
Também podemos usar o valor mínimo e o valor máximo para determinar o número de correspondências. Por exemplo, {2,3} significa correspondência mínima de 2 vezes e máxima de 3 vezes.
A expressão normal é: ca{2,3}t
Textos em espera de correspondência: ct cat caaat cbt
Resultado da correspondência: ct catcaaat
cbt
Então? e a função de {0,1} é a mesma + e a função de {1,} é a mesma.
A primeira coisa a fazer é ver os seguintes exemplos:
A expressão normal é: s.*g Esperando correspondência Resultado da correspondência: xiao song xiao song Análise: o s.*g não corresponde aos dois "songs" como previsto, mas corresponde a todo o texto entre o primeiro "s" e o último "g".
Isso ocorre porque * e + são correspondências gananciosas. Isto é, as expressões regulares sempre buscam a maior correspondência, e não a menor, o que é deliberadamente projetado.
Mas se você não quer uma correspondência gananciosa, use a correspondência não gananciosa dessas palavras-chave (coincidir com o menor número possível de caracteres). A palavra não gananciosa é adicionada após a palavra-chave:
Sim?A versão não gananciosa da versão original do Google Maps, então você pode usar *? para modificar o exemplo acima:
正则表达式:s.G?
Esperando correspondência
Resultado da correspondência: xiaosong
xiaosong
分析:可以看到s.? g corresponde a duas "songs".
Os meta-caracteres que correspondem à fronteira da cadeia são ^ e $, respectivamente, para o início e o fim da cadeia.
↑ Utiliza-se como segue:
A expressão normal: ^ xiao
Acompanhamento de texto:xiaosong
Os resultados após a correspondência:xiao
canção
Axiosong (em inglês) Resultado da correspondência: axiaosong Análise: ^ xiao corresponde a uma cadeia de caracteres que começa com "xiao".
$ é usado da seguinte forma:
A expressão normal é: song$
O texto está em espera de correspondência.
Resultado da correspondência: xiaosong
Textos em espera de correspondência:xiaosonga Resultado da correspondência: Xiaosonga Análise: song$ corresponde a uma cadeia terminada com "song".
Compartilhamento:
A expressão normal é: ^ [0-9a-zA-Z] {4,} $
Textos em espera de correspondência: a1b234ABC
Os resultados após a correspondência:a1b234ABC
Textos para corresponder: + a1b23 = 4ABC Resultado de correspondência: + a1b23 = 4ABC Análise: ^ [0-9a-zA-Z] {4,} $ é composto por números ou letras correspondentes, e tem um número de dígitos maior que a cadeia de quatro dígitos.
Observação: ^ se estiver no início do conjunto, significa negativo; se estiver fora do conjunto, corresponde ao início da cadeia.
No entanto, o modo multi-linha pode ser ativado. No modo multi-linha, o motor de expressões regulares usa o símbolo de troca de linhas como separador da cadeia de caracteres, o ^ corresponde ao início do texto ou ao início de uma linha, e o $ corresponde ao final do texto ou ao final de uma linha.
A partir de agora, a maioria dos usuários da rede social não pode usar o aplicativo.
A expressão normal é: ((?m) ^ [0-9a-zA-Z]{4,}$
Textos em espera de correspondência: a1b234ABC + a1b23 = 4ABC ABC123456
Os resultados após a correspondência:a1b234ABC
+a1b23=4ABCABC123456
Análise: ((?m) ^ [0-9a-zA-Z]{4,} $ irá combinar cada linha com um número ou letra e um número maior que a cadeia de quatro dígitos.
Observação: Se o padrão de várias linhas for usado, a m deve ser colocada 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 de \A para o início de uma cadeia de caracteres e \Z para o fim de uma cadeia de caracteres. Se suportadas, essas metacaratras têm a mesma função que ^, $.
Traduzido do livro iOS_Chiso Sango