2015-02-11 3 views
0

Я хотел бы, чтобы соответствовать 2 слова перед данным ключевым словом с помощью регулярных выражений, поэтому, если входная строка являетсяMatch 10 слов до определенного слова

good morning every body 

выход должен быть

morning every body 

I знаю \ ш соответствует любому слову, но как бы я построить мое регулярное выражение, чтобы сделать следующий

\wbody 
+0

PS: '\ w' соответствует одному символу. Любой персонаж, но новая линия! – Enissay

ответ

3

Используйте \S+, чтобы соответствовать одному или более нет n-пробелы.

\S+\s+\S+\s+body 

DEMO

или использовать \w+ вместо \S+ в приведенном выше. \s+ соответствует одному или нескольким символам пробела.

+0

Что делать, если я хочу определить произвольное количество слов? Можно ли сказать \ s {3}? – Xerxes

+0

для трех '(?: \ S + \ s +) {3} body', чтобы соответствовать двум словам:' (?: \ S + \ s +) {2} body'. Просто измените nu, ber, находящийся внутри '{}' –

+0

, и что, если я хочу, чтобы он получил 3 слова после тела? – Xerxes

1
(\w+\W+){2}body 

Вы можете изменить 2 с любым другим номером. Try it out.

+0

Im пытается это, но он не соответствует 3 словам до и 3 слова после тела: доброе утро каждое тело доброе утро каждый (\ w + \ W +) {2} body (\ w + \ W +) {2} – Xerxes

+0

Часть после «тело» должно быть изменено на противоположное: '\ W + \ w +', потому что после слова «тело» вы ожидаете неглавного символа. –

Смежные вопросы