2015-01-17 4 views
1

Я пытаюсь найти, если предложение содержит фразу «go * to», например «перейти к», «перейти» и т. Д. Я использую Textblob, и Я знаю, что я могу просто использовать ниже:Python ищет два слова regex

search_go_to = set(["go", "to"]) 
go_to_blob = TextBlob(var) 
matches = [str(s) for s in go_to_blob.sentences if search_go_to & set(s.words)] 
print(matches) 

но это было бы также вернуться предложения как «пойти туда и принести ему это», которые я не хочу. Кто-нибудь знает, как я могу сделать что-то вроде text.find («go * to»)?

ответ

3

Попробуйте использовать:

for match in re.finditer(r"go\s+\w+\s+to", text, re.IGNORECASE): 
0

Это работает?

import re 
search_go_to = re.compile("^go.*to$") 
go_to_blob = TextBlob(var) 
matches = [str(s) for s in go_to_blob.sentences if search_go_to.match(str(s))] 
print(matches) 

Объяснение регулярное выражение:

^ beginning of line/string 
go literal matching of "go" 
.* zero or more characters of any kind 
to literal matching of "to" 
$ end of line/string 

Если вы не хотите "собирается", чтобы соответствовать, вставить (границу слова) \\b перед тем to и после go.

2

Использование generator expressions

>>> search_go_to = set(["go", "to"]) 
>>> m = ' .*? '.join(x for x in search_go_to) 
>>> words = set(["go over to", "go up to", "foo bar"]) 
>>> matches = [s for s in words if re.search(m, s)] 
>>> print(matches) 
['go over to', 'go up to'] 
1

Попробуйте

text = "something go over to something" 

if re.search("go\s+?\S+?\s+?to",text): 
    print "found" 
else: 
    print "not found" 

Regex: -

\s is for any space 
\S is for any non space including special characters 
+? is for no greedy approach (not required in OP's question) 

, так что re.search("go\s+?\S+?\s+?to",text) будет соответствовать "something go W#$%^^$ to something" и, конечно же, это тоже "something go over to something"

+0

Этот ответ мог бы сделать с чуть большим разъяснением. Возможно, объясните, что представляют собой регулярные выражения - например, слова и символы, отличные от слов, знак неживого вопроса и т. Д. –

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