Python 正则表达式 findall

标签 python regex

我想在 python 中找到所有 2 个单词字符串。 我创建了这个:

#!/usr/bin/python
import re

string='a1 a2 a3 a5 a6'
search=re.findall('.. ..',string)
print len(search)
for nk in search:
        print nk

我得到: a1 a2 a3 a5 虽然我想要:a1 a2,a2 a3,a3 a5,...等 findall 应该搜索所有可能的模式? 为什么返回a1 a2,a3 a5? 谢谢。

最佳答案

它返回['a1 a2', 'a3 a5'],因为这些是唯一可以找到的模式:应用第一个模式后,'a1 a2' 部分消失了,只剩下 ' a3 a5 a6' 。下一个可能的模式是 'a3 a5''a6' 被保留下来,无法进一步匹配。

'a1 a3''a1 a5' 等无法找到,因为这种组合不会出现。请记住,您搜索两个任意字符,后跟一个空格字符,然后再搜索 2 个任意字符。

r=re.compile(r"(\S{2})(?:\s|$)")
pairs =r.findall("a1 a2 a3 a5 a6")

pairs = re.findall(r"(\S{2})(?:\s|$)", "a1 a2 a3 a5 a6")

您会找到所有 2 个字符的组合,后跟一个空格或字符串末尾:['a1', 'a2', 'a3', 'a5', 'a6']。如果将这些组合起来,您将找到所有可能的组合:

for ifirst in range(len(pairs) - 1):
    for second in pairs[ifirst + 1:]:
        print " ".join((pairs[ifirst], second))

关于Python 正则表达式 findall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13633521/

相关文章:

python - 转义 re.sub 的 repl 参数

python - 使用 RegEx 从字符串中获取 YouTube 视频 url 或 YouTube 视频 ID

python - 带插值的 vtk 3D 图像旋转/平移 (python)

python - 将路径附加到 python 程序

python - 字符串未按预期转换为浮点型

regex - 在perl中使用正则表达式拆分字符串

python - 如何在Python中的正则表达式中使用字典?

python - python中使用Tkinter编辑标题栏

Python dash Div整页背景图片

REGEX - 匹配不带something.css的something.something