2013-04-12 3 views
1

Я хочу проверить, существует ли число слов между двумя строками в более крупной строке: < n. Например, предположим, что у меня есть строка, такая как «быстрая коричневая лиса прыгает по ленивой собаке». Я хочу посмотреть, находится ли расстояние между строками «коричневая лиса» и «ленивая собака» < 5 в большей строке. Каким будет правильное регулярное выражение python для этого?подсчет числа слов между двумя строками python regexp

Я пробовал согласно link. Мой код:

s='a quick brown fox jumps over the lazy dog' 
m=re.search("'brown fox'\W+(?:\w+\W+){1,4}'lazy dog'",s) 

но совпадения не было.

+0

Не забывайте, что символы, такие как ' '' не являются частью символьный класс '\ w', и что-то вроде' \ S' (не-пробел) может быть более уместным. – Patashu

ответ

4

Вы пытаетесь соответствовать одинарные кавычки, но не любой в строке:

>>> re.search("brown fox\W+(?:\w+\W+){1,4}lazy dog", s) 
<_sre.SRE_Match at 0x3045850> 

>>> re.search("brown fox\W+(?:\w+\W+){1,3}lazy dog", s) 
<_sre.SRE_Match at 0x3045920> 

>>> re.search("brown fox\W+(?:\w+\W+){1,2}lazy dog", s) 
(None) 
+0

да, это сработал. могу ли я принять более одного ответа? оба (ваш и Паташу) верны. ошибка была сопоставлена ​​для одинарных кавычек. – rivu

+0

@rivu Вы можете перенести оба ответа, но вы можете только принять их, поэтому примите тот, который, по вашему мнению, более полезен/указывает на большее усилие. – Patashu

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