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

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

正則表達式匹配,直到找到除單詞“and”之外的任何字符

正則表達式匹配,直到找到除單詞“and”之外的任何字符

翻翻過去那場雪 2023-10-06 19:34:22
我想找到一個正則表達式解決方案來匹配項目編號之后的字符串的一部分,直到找到任何字符,除非它是單詞“and”s = 'this part 123 should be ignored Item Number(s)92349252 and 30239429434, 124029354,345340332,  234325923 hallo 2121124'如果我專門添加它就可以了hallore.match(r'.*?Item Number\(s\)(.*?)hallo.*$', s).group(1)'92349252 and 30239429434, 124029354,345340332,  234325923 '但是我希望它適用于任何字符(包括hallo),除非它是單詞and。
查看完整描述

3 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

我錯誤地陳述了問題。正確的問題是:在項目編號之后查找包含數字的字符串,直到找到單詞,除非該單詞是and。


改寫:找到后面Item Number(s)有 1 個或多個數字且由零個或多個非單詞字符分隔的字符串,或者重復單詞“and”,前面有一個非單詞字符,后跟 0 個或多個非單詞字符


import re

s = '123 ignore Item Number(s)92349252 and,,;^and,and;;;30239429434, 124029354,345340332,  and and 234325923 hallo 2121124'

pattern = r'.*?Item Number\(s\)(((\W*?|(\W+?and)+\W*?)\d+)+)'

m = re.match(pattern, s).group(1)

numbers = re.findall('\d+', m)

print(numbers)


['92349252', '30239429434', '124029354', '345340332', '234325923']


查看完整回答
反對 回復 2023-10-06
?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

您不需要正則表達式,只需使用:

a,b,c = s.partition("and")print(c)

c是and之后的部分。


查看完整回答
反對 回復 2023-10-06
?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

我們可以嘗試使用字符串 split 與 的組合re.findall。首先,拆分 text 上的輸入Item Number(s),并保留數組中的第二個條目。這對應于 右側的所有文本Item Number(s)。然后,使用re.split分割 空格,后跟一些不是單詞、and數字、空格或逗號的內容。最后,使用re.findall從剩余文本中捕獲所有數字。


s = 'this part 123 should be ignored Item Number(s)92349252 and 30239429434, 124029354,345340332,  234325923 hallo 2121124'

nums = re.findall(r'\b\d+\b', re.split(r' (?!\band\b|[\d\s,])', s.split('Item Number(s)')[1])[0])

print(nums)


['92349252', '30239429434', '124029354', '345340332', '234325923']


查看完整回答
反對 回復 2023-10-06
  • 3 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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