我試圖提取之前Y被邊界分隔的任何單詞。因為我試圖使用(?m)標(biāo)志將每一行視為單獨的記錄,并嘗試捕獲\w+的前瞻\s+Y,但我只能打印第一個匹配,而不是第二個匹配(IMP1)。print(foo)this is IMP Y textand this is also IMP1 Y textthis is not so IMP2 N textY is not important目前無果的嘗試:>>> m = re.search('(?m).*?(\w+)(?=\s+Y)',foo)>>> m.groups()('IMP',)>>>>>> m = re.search('(?m)(?<=\s)(\w+)(?=\s+Y)',foo)>>> m.groups()('IMP',)>>>預(yù)期結(jié)果是:('IMP','IMP1')
2 回答

慕慕森
TA貢獻(xiàn)1856條經(jīng)驗 獲得超17個贊
您可以使用
\w+(?=[^\S\r\n]+Y\b)
請參閱正則表達(dá)式演示。細(xì)節(jié):
\w+
- 一個或多個字母/數(shù)字/下劃線 -(?=[^\S\r\n]+Y\b)
- 緊跟一個或多個除 CR 和 LF 之外的空格,然后Y
作為整個單詞(\b
是單詞邊界)。
查看Python 演示:
import re
foo = "this is IMP Y text\nand this is also IMP1 Y text\nthis is not so IMP2 N text\nY is not important"
print(re.findall(r'\w+(?=[^\S\r\n]+Y\b)', foo))
# => ['IMP', 'IMP1']
添加回答
舉報
0/150
提交
取消