2017-08-08 48 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

不,我想知道这个概念它的自我,我和这个字符串来表示它。 –

相关问题