Você pode usar classes de caracteres negados para excluir certos caracteres: por exemplo [^abcde], corresponderá a qualquer coisa, exceto aos caracteres a, b, c, d, e.
Em vez de especificar todos os caracteres literalmente, você pode usar atalhos dentro das classes de caracteres: [\w](minúsculas) corresponderá a qualquer "caractere de palavra" (letra, números e sublinhado), [\W](maiúscula) corresponderá a qualquer coisa, exceto caracteres de palavra; da mesma forma, [\d]corresponderá aos dígitos 0-9, enquanto [\D]corresponderá a qualquer coisa menos aos dígitos 0-9 e assim por diante.
Há duas maneiras de dizer "não corresponde": intervalos de caracteres e lookahead / lookbe behind negativo de largura zero.
O ex-: não corresponderem a, b, cou 0:[^a-c0]
O último: corresponde a qualquer string de três letras, exceto fooe bar:
(?!foo|bar).{3}
ou
.{3}(?<!foo|bar)
Além disso, uma correção para você: *, ?e +realmente não corresponde a nada. Eles são operadores de repetição e sempre seguem um operador de correspondência. Assim, a+os meios corresponder a um ou mais a, [a-c0]+meios corresponder a um ou mais de a, b, cou 0, enquanto que [^a-c0]+iria coincidir com um ou mais de qualquer coisa que não era a, b, cou 0.
Respostas:
Você pode usar classes de caracteres negados para excluir certos caracteres: por exemplo
[^abcde]
, corresponderá a qualquer coisa, exceto aos caracteres a, b, c, d, e.Em vez de especificar todos os caracteres literalmente, você pode usar atalhos dentro das classes de caracteres:
[\w]
(minúsculas) corresponderá a qualquer "caractere de palavra" (letra, números e sublinhado),[\W]
(maiúscula) corresponderá a qualquer coisa, exceto caracteres de palavra; da mesma forma,[\d]
corresponderá aos dígitos 0-9, enquanto[\D]
corresponderá a qualquer coisa menos aos dígitos 0-9 e assim por diante.Se você usa PHP, pode dar uma olhada na documentação das classes de caracteres regex .
fonte
Há duas maneiras de dizer "não corresponde": intervalos de caracteres e lookahead / lookbe behind negativo de largura zero.
O ex-: não corresponderem
a
,b
,c
ou0
:[^a-c0]
O último: corresponde a qualquer string de três letras, exceto
foo
ebar
:(?!foo|bar).{3}
ou
.{3}(?<!foo|bar)
Além disso, uma correção para você:
*
,?
e+
realmente não corresponde a nada. Eles são operadores de repetição e sempre seguem um operador de correspondência. Assim,a+
os meios corresponder a um ou maisa
,[a-c0]+
meios corresponder a um ou mais dea
,b
,c
ou0
, enquanto que[^a-c0]+
iria coincidir com um ou mais de qualquer coisa que não eraa
,b
,c
ou0
.fonte
^((?!foo).)+$
Corresponde a qualquer linha que não contenha foo regex101.com/r/z6a65l/4[^]
(dentro de [] ) é a negação na expressão regular, enquanto que^
é o "início da string"[^a-z]
corresponde a qualquer caractere único que não seja de "a" a "z"^[a-z]
significa que a string começa com de "a" a "z"Referência
fonte
^
usado no início de um intervalo de caracteres ou afirmações de antevisão / antevisão negativas.>>> re.match('[^f]', 'foo') >>> re.match('[^f]', 'bar') <_sre.SRE_Match object at 0x7f8b102ad6b0> >>> re.match('(?!foo)...', 'foo') >>> re.match('(?!foo)...', 'bar') <_sre.SRE_Match object at 0x7f8b0fe70780>
fonte
?!
nos últimos 2 exemplos ou pode apenas usar!
sozinho? O que?
faz aí??
para saber que é uma extensão. Outros motores de regex podem ter suas próprias regras.