正则表达式不匹配字符串的每个部分

时间:2017-08-08 18:26:41

标签: regex python-3.x

我编写了以下代码来匹配模式,但我无法获得它。导入重新

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

Out:[(' Hello',' Chelsea'),(' Hello',' ManU')] 我试图实现的是。

[(' Hello',' Chelsea'),(' Chelsea',' Hello'),('你好& #39;,' ManU')]

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

Out:[(' Hello',' Chelsea')]

我努力实现的是。

[(' Hello',' Chelsea'),(' Chelsea',' Hello')]

为什么正则表达式会忽略这两个单词,如果找到匹配以便稍后搜索? 如何实现那个输出。 谢谢。

2 个答案:

答案 0 :(得分: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')]

答案 1 :(得分:0)

如果您只想要成对单词,为什么要使用正则表达式?

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