2012-04-04 4 views
1

Ich habe eine Methode, die für das Wort ‚nicht‘ und dann einem Wort, nachdem es aussieht, aber wenn ich einen Satz habe wie:PHP einen Punkt vor einem Wort zu erkennen

das ist gut. Nicht gut

aus irgendeinem Grund die ‚nicht‘ nicht aufgrund der vollständigen Stillstand abgeholt werden, die vor ihm ist, Wer weiß, wie dies zu umgehen, ist der Code unter

preg_match_all("/(?<=\b not\b)\b good\b/i", $find, $matches); 
+1

Was ist '$ poswords'? – zerkms

+0

Liste der positiven Wörter in einer Datenbank – linda

+1

und wir müssen es erraten? Bitte ersetzen Sie "$ poswords" in Ihrem regulären Ausdruck mit dem tatsächlichen Wert, der nicht wie erwartet funktioniert. – zerkms

Antwort

2

\b entspricht einer Wortgrenze, die die Position zwischen zwei Zeichen ist, wobei eins ein Wortzeichen ist und eines nicht. Wortzeichen sind [a-zA-Z0-9]. Sie passen eine Wortgrenze vor einem Leerzeichen vor dem not an, und dort gibt es keine Wortgrenze, da die Zeichenfolge ein Vollstopp wie das vorherige Zeichen hat.

Das heißt, es gibt keine Wortgrenze zwischen einem Punkt und Leerzeichen, weil weder ist ein Wortzeichen.

Weitere Informationen: http://www.regular-expressions.info/wordboundaries.html

+0

bedeutet, dass es keine Möglichkeit gibt, um es herum? – linda

+1

Es bedeutet einfach, dass Sie genau nach dem suchen müssen, was Sie finden möchten. Wenn Sie "nicht" als Wort isolieren möchten, verwenden Sie '\ bnot \ b' ohne Leerzeichen in diesem Ausdruck. Das wird "nicht" mit einem Nicht-Wort-Zeichen vor "n" und nach "t" übereinstimmen. Das könnte ein Fullstop, Leerzeichen, Hashzeichen sein ... –

+0

oh Problem gelöst dann – linda

Verwandte Themen