2010-12-11 11 views
0

ich mit diesem Ausdruck in PHP eine direkte Rede zu finden versuchen:php regex Problem für die direkte Rede

/Mr.X, (\"|\'|\'\')(.+?)(\"|\'|\'\') dedi\./

// "Dedi" bedeutet, sagt in Türkisch. Zunächst einmal ist es für diesen Ausdruck funktioniert:

Mr.X, "I will survive" dedi.

Aber es gibt einige Probleme, dass der Ausdruck wie das entspricht einem:

Mr.X "I will survive" asdasdasdasdasd Mrs.Y "so mache ich" dedi. ?.

Wie kann ich "Zeichen in Fett oben

+2

Regex ist normalerweise keine sehr gute Idee für das Parsen natürlicher Sprache. –

+2

@mark natürlich Sprache Verarbeitung ist in der Regel keine sehr gute Idee, entweder –

+0

@ Jeff Atwood: Ich nehme an, Sie meinen, NLP ist im Allgemeinen zu schwer? – Orbling

Antwort

0

Statt (.+?) entfernen, verwenden ([^"']+) nur nicht-Anführungszeichen passen

1

Dies sollte funktionieren: /Mr\.X, (["'])([^\1]+)\1 dedi\./U Hinweis der ungreedy Modifikator ich bin! nicht sicher, ob in Zeichenklasse über den Rückverweis. probieren Sie es.