簡體   English   中英

Python正則表達式findall

[英]Python regular expression findall

我想在 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,... etc 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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM