如果我使用:
import re
words = re.findall(r"(?u)\b\w\w \b", "aaa, bbb ccc. ddd\naaa xxx yyy")
print(words)
print(len(words))
正如預期的那樣,我得到:
['aaa', 'bbb', 'ccc', 'ddd', 'aaa', 'xxx', 'yyy']
7
現在我想修改正則運算式,以便也能夠計算 2 克和 3 克,同時考慮到標點??符號和換行符。特別是,在這種情況下,我期望的結果是:
['aaa', 'bbb', 'ccc', 'ddd', 'aaa', 'xxx', 'yyy', 'bbb ccc', 'aaa xxx', 'xxx yyy', 'aaa xxx yyy']
11
如何修改正則運算式才能做到這一點?
uj5u.com熱心網友回復:
原始答案
import re
from itertools import chain
s = "aaa, bbb ccc. ddd\naaa xxx yyy"
result = list(chain(*(re.findall('(?=((?<!\w)\w\w\w ' ' \w\w\w ' * n '(?!\w)))', s)
for n in range(3))))
輸出:
>>> result
['aaa', 'bbb', 'ccc', 'ddd', 'aaa', 'xxx', 'yyy', 'bbb ccc', 'aaa xxx', 'xxx yyy', 'aaa xxx yyy']
改進的答案(感謝@CasimiretHippolyte 的有用評論)
import re
from itertools import chain
s = "aaa, bbb ccc. ddd\naaa xxx yyy"
result = list(chain(*(re.findall(r'\b(?=(\w\w\w ' ' \w\w\w ' * n '))', s)
for n in range(3))))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/409289.html
標籤:
