2017-08-08 85 views
1

我寫了下面的代碼匹配模式的每個部分匹配,但我不能讓it.import重新正則表達式不串

pattern = re.compile(r"(\w+) (\w+)") 
match = pattern.findall("Hello Chelsea Hello ManU") 
print(match) 

日期:[(「你好」,「切爾西」 ),('你好','ManU')] 我試圖實現的是。

[( '你好', '切爾西'),( '切爾西', '你好'),( '你好', '馬努')]

pattern = re.compile(r"(\w+) (\w+)") 
match = pattern.findall("Hello Chelsea Hello") 
print(match) 

輸出:[( '你好', 'Chelsea')]

我試圖實現的是。

[( '你好', '切爾西'),( '切爾西', '你好')]

爲什麼正則表達式忽略這兩個詞,如果找到匹配的以後的搜索? 如何實現該輸出。 謝謝。

回答

2

使用較新的regex模塊:

import regex as re 

s = "Hello Chelsea Hello ManU" 

matches = re.findall(r'\b(\w+) (\w+)\b', s, overlapped = True) 
print(matches) 
# [('Hello', 'Chelsea'), ('Chelsea', 'Hello'), ('Hello', 'ManU')] 
+0

例外: ModuleNotFoundError:沒有名爲'regex'的模塊 –

+0

啊,我安裝了它,它工作得如此之好:) –

0

如果你只是想要雙詞,爲什麼要使用正則表達式?

s = "Hello Chelsea Hello ManU".split() 
out = [(s[i], s[i+1]) for i in range(len(s)-1)] 
+0

不,我想知道這個概念它的自我,我和這個字符串來表示它。 –

相關問題