2011-03-08 4 views
3

J'ai besoin d'une regex qui correspondra au plus 5 mots avant et après un certain mot. Exemple:Match max 5 mots avant et après un certain mot

le certain mot est « le »

la chaîne est « John Ely obtient départ pour les Dodgers, tandis que vieil ami Takashi Saito se lancer pour les Brewers dans ce qui sera essentiellement un jeu enclos des releveurs pour Milwaukee. "

Il devrait y avoir 2 résultats:

John Ely obtient départ pour les Dodgers, tandis que vieil ami Takashi

Takashi Saito se lancer pour les Brewers dans ce qui sera essentiellement

Tous idées ???

Merci

+0

Qu'entendez-vous par "mot"? C'est un terme très vague car cela signifie différentes choses dans différentes langues, et encore quelque chose d'autre dans les expressions régulières. –

Répondre

5
(?:[a-zA-Z'-]+[^a-zA-Z'-]+){0,5}the(?:[^a-zA-Z'-]+[a-zA-Z'-]+){0,5} 

Notez cependant que la plupart des moteurs regex ne traitera pas avec des allumettes qui se chevauchent.

+0

donc, pour être sûr que le mot était un mot réel, et ne fait pas partie du mot "thèse" ou "père", comment modifier le Regex? Fondamentalement, nous avons juste besoin de nous assurer que le n'a pas d'autres lettres autour de lui, la ponctuation ou les espaces sont bien cependant. Merci! – user417669

+1

@ user417669 Ajouter des limites de mot, \ b, de chaque côté du mot de recherche pour forcer la correspondance de mots entiers uniquement. '(?: [a-zA-Z '-] + [^ a-zA-Z' -] +) {0,5} \ bla \ b (?: [^ a-zA-Z '-] + [ a-zA-Z '-] +) {0,5} ' – jmorganmartin

Questions connexes