2014-06-25 7 views
5

Ich versuche, eine Regex zu den Wörtern es, es, und es ist.Regex passt nur dazu und es ist, aber es ist nicht

Ich verwende \b, um Wörter zu finden, aber es scheint, dass es nur übereinstimmende Zeichen ist. Wie kann ich erreichen, dass alles passt, aber Leerzeichen?

Hier ist die Regex so weit: \b(it|it's|its)\b. Wie kann ich erreichen, dass es exakt den Wörtern entspricht, die es ist, und es ist?

Antwort

8

wird Dieses arbeiten:

\bit(?:'?s)?\b 

Ihr Muster itdas Element, weil im Wechsel mit it's nicht funktioniert (das erste wird getestet) gelingt vor it's, die überhaupt nicht getestet. Sie können auch \b(it's|it|its)\b schreiben.

+0

Guter Punkt über die Reihenfolge des Erfolgs. Würde nicht derselbe Gedankengang zu "\ b (es ist | es | es) \" führen, obwohl "es" vor "seinem" gelingen würde? (Ich nehme an, die Reihenfolge der ersten beiden wäre egal) – Trojan

+2

@Trojan: Sie haben nicht das gleiche Problem mit 'its' und' it' wegen der Wortgrenzen. –

+0

Ein Apostroph ist eine Wortgrenze, dann? – Trojan

Verwandte Themen