Latest web development tutorials

Expressões Regulares - Exemplos

As expressões simples

A forma mais simples de uma expressão regular que corresponde o seu próprio carácter único comum na cadeia de pesquisa. Por exemplo, o modo de um único caractere, como A, seja na cadeia de pesquisa onde ele sempre corresponde à letra A. O que se segue é um exemplo de um padrão de expressão regular de alguns dos caracteres simples:

/a/
/7/
/M/

Pode ser combinados em conjunto para formar um único caracteres de diversos expressões. Por exemplo, a seguinte expressão regular é uma combinação de expressões de caracteres simples: um 7 e M.

/a7M/

Observe que nenhum operador de concatenação. Basta digitar um outro personagem por trás de um personagem.

jogos de caracteres

Ponto (.) Corresponde a seqüência em uma variedade de impressão e não-impressão caracteres, apenas uma exceção personagem. A exceção é o caractere de nova linha (\ n). A seguinte expressão regular corresponde aac, abc, acc, adc, etc., bem como a1c, A2C, ac, e uma # c:

/a.c/

Para corresponder a uma string contendo o nome do arquivo e o ponto (.) É parte integrante da cadeia de entrada, na frente da expressão regular no período mais o caractere de barra invertida (\). Para ilustrar, a seguinte expressão regular corresponde filename.ext:

/filename\.ext/

Estas expressões só permitem a corresponder "qualquer" caráter único. A lista pode precisar combinar conjunto de caracteres específico. Por exemplo, você pode querer encontrar títulos dos capítulos com algarismos (Capítulo 1, Capítulo 2, e assim por diante).

Expressões em parênteses

Para criar uma lista de grupo de caracteres de correspondência, entre colchetes ([e]) colocando um ou mais caracteres individuais dentro. Quando o personagem entre colchetes, a lista chamada "expressão de colchetes." Como em qualquer outro local, caracteres ordinários representam a si mesmos dentro de colchetes, ou seja, ele corresponde a um dos seus próprios no texto de entrada. Perdem o sentido quando você aparece na expressão suporte maioria dos caracteres especiais. Mas há algumas exceções, tais como:

  • Se o personagem] não é o primeiro, que é o fim de uma lista. Para coincidir com o personagem lista], colocá-lo em primeiro lugar, seguido no início da [parte de trás.
  • \ Character continua a ser um caractere de escape. Para coincidir com a \ personagem, use \\.

Fechado em uma partida expressão de colchetes apenas uma personagem de uma expressão regular em um único caractere nessa posição. A seguinte expressão regular correspondente Capítulo 1, Capítulo 2, capítulo 3, capítulos 4 e 5:

/Chapter [12345]/

Por favor note que a localização do espaço após a palavra Capítulo e com respeito ao caráter dentro dos suportes são fixos. expressão de colchetes especifica somente coincidir com um único personagem posição imediatamente a seguir a palavra Chapter eo espaço por trás do conjunto de caracteres. Esta é a posição do carácter nono.

Para usar um intervalo em vez de os próprios personagens para representar correspondência conjunto de caracteres, use um hífen (-) no intervalo do carácter de início e caráter final separadamente. valor de caracteres para determinar a ordem relativa de caracteres individuais dentro da gama. A seguinte expressão regular contém uma expressão de intervalo, a expressão é equivalente à dos intervalos acima indicados na lista de parênteses.

/Chapter [1-5]/

Quando usado dessa maneira especificada gama, tanto os valores de início e final e estão incluídas no âmbito de aplicação. Nota É também importante, de acordo com a ordem de classificação Unicode, o valor deve começar no final dos valores anteriores.

Para incluir na expressão hífen suporte, use um dos seguintes métodos:

  • Com a barra invertida escapar:
    [\-]
  • O hífen no início ou no fim da lista entre parênteses. As seguintes expressões corresponder todas as letras minúsculas e hífens:
    [-a-z]
    [a-z-]
    
  • Criar um intervalo, nesta gama, o valor inicial é menos do que o hífen e o carácter final é igual a ou maior do que o hífen. As seguintes duas expressões regulares satisfazer este requisito:
    [!--]
    [!-~]
    

Para encontrar uma lista ou não no âmbito de todos os personagens, coloque o acento circunflexo (^) no início da lista. Se qualquer outro local na lista para inserir caracteres aparecem, em seguida, ele corresponde em si. A expressão regular a seguir corresponde a qualquer caractere, 4 ou 5 dígitos e mais além:

/Chapter [^12345]/

No exemplo acima, a expressão corresponde a qualquer 3, 4 ou 5 números e caracteres que não sejam na nona posição. Assim, por exemplo, Capítulo 7 é um jogo, Capítulo 9 é um jogo.

A expressão acima pode utilizar um hífen (-) para indicar:

/Chapter [^1-5]/

Um uso típico de uma expressão de colchetes é especificar todas as letras maiúsculas ou minúsculas ou qualquer número de partidas. A expressão a seguir especifica um tal jogo:

/[A-Za-z0-9]/

Substituições e agrupamento

Substitua uso | personagem para permitir a comunicação entre duas ou mais alternativas para escolher. Por exemplo, os títulos dos capítulos podem ser estendidos expressões regulares para retornar uma gama mais ampla do que o título do capítulo corresponde. No entanto, isso não é tão simples como se poderia pensar. Substituir Jogo | caráter máxima expressão de qualquer um dos lados.

Você pode pensar que a seguinte expressão corresponde a aparecer no início e no fim da linha, seguido por um ou dois dígitos do capítulo ou da Secção:

/^Chapter|Section [1-9][0-9]{0,1}$/

Infelizmente, a expressão regular acima linhas, quer o primeiro capítulo palavra ou finais correspondentes da linha com a palavra Secção e quaisquer números subsequentes correspondentes. Se a cadeia de entrada é o capítulo 22, então a expressão acima corresponde apenas a palavra Capítulo. Se a cadeia de entrada é a Seção 22, então a expressão corresponde a Secção 22.

Para tornar as expressões regulares são mais fáceis de controlar, você pode usar parênteses para limitar o âmbito da substituição, ou seja, para garantir que ele se aplica apenas às duas palavras capítulo e da secção. No entanto, os parênteses são usados ​​para criar uma sub-expressão, e, possivelmente, capturá-los para uso posterior, que é descrito na secção sobre referências reversa. Pelas expressões regulares acima para adicionar local parênteses, ele pode fazer a expressão regular Capítulo 1 ou Seção 3 correspondência.

A seguinte expressão regular usa parênteses para Capítulo grupo e Seção, a fim de funcionar corretamente expressão:

/^(Chapter|Section) [1-9][0-9]{0,1}$/

Embora essas expressões funcionar, mas Capítulo | Seção suportes em torno vai pegar qualquer uma das duas palavras em uma partida para uso posterior. Uma vez que a expressão acima é apenas um conjunto de parênteses, para que apenas capturou uma "sub-partidas."

No exemplo acima, você só precisa usar parênteses para selecionar uma combinação de palavras entre o capítulo e secção. Para evitar partidas para ser salvo para uso futuro, antes que o padrão de expressão regular é colocado entre parênteses?:. A seguinte modificação fornece a mesma capacidade sem guardar as partidas da criança:

/^(?:Chapter|Section) [1-9][0-9]{0,1}$/

Além disso :? caráter Exon, os outros dois são metacaracteres não captura de criar algo chamado de "lookahead" jogo. uso lookahead frente? = especificado, ele corresponde a entre parênteses correspondem ao padrão de expressão regular do ponto da cadeia de pesquisa de partida. Reverter uso lookahead ?! especificado, ele corresponde no padrão de expressão regular não corresponde a seqüência de pesquisa seqüência de partida.

Por exemplo, suponha que você tenha um documento que contém links para o Windows 3.1, Windows 95, Windows 98 e Windows NT referências de. Suponhamos ainda que você precisa atualizar o documento irá apontar para Windows 95, Windows 98 e Windows NT todas as referências alterado para Windows 2000. A expressão regular a seguir (este é o primeiro exemplo de uma previsão para a frente) coincidir com Windows 95, Windows 98 e Windows NT:

/Windows(?=95 |98 |NT )/

Encontrar um jogo, o jogo irá procurar imediatamente para o próximo jogo no texto (não incluindo os caracteres de verificação à frente) depois. Por exemplo, se a expressão acima combinado Windows 98, em vez disso, continuar a busca após 98 após o Windows.

outros exemplos

Aqui estão alguns exemplos de expressões regulares:

正则表达式 描述
/\b([a-z]+) \1\b/gi 一个单词连续出现的位置。
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ 将一个URL解析为协议、域、端口及相对路径。
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/ 定位章节的位置。
/[-a-z]/ a至z共26个字母再加一个-号。
/ter\b/ 可匹配chapter,而不能匹配terminal。
/\Bapt/ 可匹配chapter,而不能匹配aptitude。
/Windows(?=95 |98 |NT )/ 可匹配Windows95或Windows98或WindowsNT,当找到一个匹配后,从Windows后面开始进行下一次的检索匹配。
/^\s*$/ 匹配空行。
/\d{2}-\d{5}/ 验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。
/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/ 匹配 HTML 标记。