我有一個(gè)字符串:test=' 40 virtual asset service providers law, 2020e section 1 c law 14 of 2020 page 5 cayman islands'我想匹配所有出現(xiàn)的數(shù)字,然后不僅打印數(shù)字,還打印數(shù)字兩邊的三個(gè)字符。目前,使用re我匹配的數(shù)字:print (re.findall('\d+', test ))
['40', '2020', '1', '14', '2020', '5']我希望它返回:[' 40 v', 'w, 2020e s', 'aw 14 of', 'of 2020 ', 'ge 5 c']
3 回答

回首憶惘然
TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
用于.
捕獲任何字符,然后{0,3}
在每側(cè)捕獲最多 3 個(gè)字符
print(re.findall('.{0,3}\d+.{0,3}', test))

繁華開(kāi)滿天機(jī)
TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
re.findall(".{0,3}\d+.{0,3}", test)
{0,3} “貪心”量詞最多匹配 3 個(gè)字符。

浮云間
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
干得好:
re.findall('[^0-9]{0,3}[0-9]+[^0-9]{0,3}', test)
[編輯]
打破模式:'[^0-9]{0,3}'
匹配最多 3 個(gè)非數(shù)字字符'[0-9]+'
匹配一個(gè)或多個(gè)數(shù)字
最終模式'[^0-9]{0,3}[0-9]+[^0-9]{0,3}'
匹配一個(gè)或多個(gè)數(shù)字,每邊最多被 3 個(gè)非數(shù)字包圍。
為了減少混淆,我贊成在模式中使用'[^0-9]{0,3}'
而不是(如其他答案中所述),因?yàn)樗鞔_告訴需要匹配非數(shù)字??赡軙?huì)造成混淆,因?yàn)樗ヅ淙魏挝淖郑ò〝?shù)字)。'.{0,3}'
'.'
添加回答
舉報(bào)
0/150
提交
取消