2014-06-25 16 views
5

Sto provando a ottenere un'espressione regolare per abbinare le parole esso, è, ed è.Regex corrisponde solo a esso e relativo, ma non è

Sto usando \b per abbinare le parole, ma sembra che si tratti solo di caratteri corrispondenti. Come posso far corrispondere qualsiasi cosa, ma spazio bianco?

Ecco la regex finora: \b(it|it's|its)\b. Come posso far corrispondere esattamente le parole, è, e il suo?

risposta

8

Questo funziona:

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

vostro modello non funziona con it's perché l'alternanza della voce it(che è testato prima) riesce prima it's che non è testato a tutti. Puoi scrivere anche \b(it's|it|its)\b.

+0

Buon punto sull'ordine di successo. Lo stesso treno di pensiero non porterebbe però a '\ b (è | its | it) \ b', poiché' it' avrebbe successo prima di 'its'? (Suppongo che l'ordine dei primi due non abbia importanza) – Trojan

+2

@Trojan: non si ha lo stesso problema con 'its' e' it' a causa dei confini delle parole. –

+0

Un apostrofo è un limite di parole, quindi? – Trojan

Problemi correlati