Negar uma referência anterior em Expressões Regulares
se uma string tiver este formato previsto:
value = "hello and good morning"
Onde as "(aspas) também podem ser '(aspas simples) e o caractere de fechamento (' ou") será o mesmo que o de abertura. Quero corresponder a string entre aspas.
\bvalue\s*=\s*(["'])([^\1]*)\1
(os dois \ s devem permitir espaços próximos ao sinal =)
O primeiro "grupo capturado" (dentro do primeiro par de colchetes) - deve corresponder à citação de abertura que deve ser 'ou "then - devo permitir que qualquer número de caracteres que não seja o que foi capturado no primeiro grupo e espero que o caractere seja capturado no grupo (as aspas).
(a sequência necessária deve ser capturada no segundo grupo de captura
Isso não funcion
Isso faz:
\bvalue\s*=\s*(['"])([^"']*)["']
mas quero ter certeza de que as aspas de abertura e de fechamento (duplas ou simples) são iguai
EDITA
O objetivo era basicamente obter a tag de abertura de uma âncora que incluísse um determinado nome de classe em seu atributo de classe, e eu queria cobrir a rara ocasião do atributo de classe, incluindo um (') ou um (").
Seguindo todos os conselhos aqui, usei o padrão:
<\s*\ba\b[^<>]+\bclass\s*=\s*("|'|\\"|\\')(?:(?!\1).)*\s*classname\s*(?:(?!\1).)*\1[^>]*>
Significad:
Encontre um sinal de tag abert
Permitir espaços.
Encontre opalavr uma
Permitir qualquer marca que não seja de fechamento.
Find "class (qualquer espaço) = (qualquer espaço)"
Obtenha aspas iniciais, uma das seguintes opções: ("ou 'ou \" ou \').
Da resposta de Alan Moore: permita caracteres que não sejam as aspas iniciai
find classname
Permitir caracteres que não sejam as aspas iniciai
Encontre a cotação de fechamento que é igual à abertur
Permitir caracteres de etiqueta não revelad
Encontre a tag de fechamento char.