Lookarounds são asserções de largura zero. Eles verificam uma regex (à direita ou à esquerda da posição atual - com base na frente ou atrás), obtém êxito ou falha quando uma correspondência é encontrada (com base na positiva ou negativa) e descarta a parte correspondente. Eles não consomem nenhum caractere - a correspondência para a regex que os segue (se houver) começará na mesma posição do cursor.
Leia regular-expression.info para mais detalhes.
Sintaxe:
(?=REGEX_1)REGEX_2
Corresponder apenas se REGEX_1 corresponder; depois de corresponder a REGEX_1, a correspondência é descartada e a pesquisa por REGEX_2 começa na mesma posição.
exemplo:
(?=[a-z0-9]{4}$)[a-z]{1,2}[0-9]{2,3}
REGEX_1 [a-z0-9]{4}$
corresponde a quatro caracteres alfanuméricos seguidos pelo final da linha.
REGEX_2 é o [a-z]{1,2}[0-9]{2,3}
que corresponde a uma ou duas letras seguidas por dois ou três dígitos.
REGEX_1 garante que o comprimento da string seja realmente 4, mas não consome nenhum caractere, para que a pesquisa por REGEX_2 comece no mesmo local. Agora REGEX_2 garante que a sequência corresponda a outras regras. Sem olhar para frente, seria igual a três ou cinco cordas.
Sintaxe:
(?!REGEX_1)REGEX_2
Corresponder apenas se REGEX_1 não corresponder; depois de verificar REGEX_1, a pesquisa por REGEX_2 começa na mesma posição.
exemplo:
(?!.*\bFWORD\b)\w{10,30}$
A parte antecipada verifica FWORD
a sequência e falha se a encontrar. Se não encontrar FWORD
, o olhar adiante terá êxito e a parte a seguir verificará se o comprimento da string está entre 10 e 30 e se contém apenas caracteres de palavrasa-zA-Z0-9_
O look-behind é semelhante ao look-ahead: apenas olha atrás da posição atual do cursor. Alguns tipos de expressões regulares como o javascript não suportam asserções de look-behind. E a maioria dos sabores que o suportam (PHP, Python etc) exigem que essa parte do look-behind tenha um comprimento fixo.
- Os grupos atômicos basicamente descartam / esquecem os tokens subseqüentes no grupo quando um token corresponde. Verifique esta página para exemplos de grupos atômicos