Eu estou tentando escrever uma expressão regular no PHP. A partir deste código eu quero corresponder "bar".
<data info="foo">
"bar"|tr
</data>
Eu tentei este dois regex, sem sucesso. Corresponde a "foo"> "bar".
$regex = "/"(.*?)"|tr/s";
$regex = "/"[^"]+(.*?)"|tr/s";
Alguém pode me ajudar?
Respostas:
3 para resposta № 1Você precisa escapar da barra invertida em strings PHP:
$regex = "/"([^"]*)"\|tr/s";
Eu adicionei um grupo de captura para obter o conteúdo das citações, nas quais você parece estar interessado.
Já que você parece aplicar o regex ao XML, eu só quero avisá-lo que XML e expressões regulares não jogam bem juntas. Regex é apenas recomendável em conjunto com um DOM.
0 para resposta № 2
"w+"
deve corresponder a qualquer palavra char entre parênteses
0 para resposta № 3
Tente isto:
$regex = "/"([^">]+)"|tr/s"
Se você quiser combinar apenas letras e números, você pode fazer:
$regex = "/"([wd]+)"|tr/s"
0 para a resposta № 4
$regex = "/"(.+?)"(?=|tr)/"
Vai combinar "bar"
(incluindo as aspas), e você tem o bar
string (sem aspas) em $ 1. Usos olhe para frente.