亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

提取字符之前的單詞

提取字符之前的單詞

qq_遁去的一_1 2023-08-15 16:32:03
我試圖提取之前Y被邊界分隔的任何單詞。因為我試圖使用(?m)標志將每一行視為單獨的記錄,并嘗試捕獲\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',)>>>預期結果是:('IMP','IMP1')
查看完整描述

2 回答

?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

您可以使用

\w+(?=[^\S\r\n]+Y\b)

請參閱正則表達式演示。細節:

  • \w+- 一個或多個字母/數字/下劃線 - (?=[^\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']


查看完整回答
反對 回復 2023-08-15
?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

嘗試使用:

(\w+)(?=.Y)

你可以在這里測試

所以,完整的代碼是:

import re


a="""this is IMP Y text

and this is also IMP1 Y text

this is not so IMP2 N text

Y is not important"""



print (re.findall(r"(\w+)(?=.Y)",a))

輸出:


['IMP', 'IMP1']


查看完整回答
反對 回復 2023-08-15
  • 2 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號