[英]not matching a set number of characters in regex
我有以下表達式
diff_pr_EUR-44_cordex_rcp45_mon_ave_2048-2060_minus_2005-2017_mon10_ave1_withsd.nc
我想使用regex
來提取並生成以下字符串
rcp45_mon10
到目前為止,我已經嘗試使用在線正則表達式測試程序
rcp\d\d[^.]+mon\d+
哪個提取超過我需要的...
rcp45_mon_ave_2048-2060_minus_2005-2017_mon10
如何讓正則表達式跳過后續字符直到它到達mon10
部分?
謝謝
您可以使用兩個匹配的組進行匹配,然后join
:
>>> ''.join(re.findall(r'(rcp\d{2}).*?(\_mon\d{2})', s)[0])
'rcp45_mon10'
你可以在這里使用re.sub
:
>>> s = 'diff_pr_EUR-44_cordex_rcp45_mon_ave_2048-2060_minus_2005-2017_mon10_ave1_withsd.nc'
>>> print (re.sub(r'^.*?(rcp\d+).*(_mon\d+).*', r'\1\2', s))
rcp45_mon10
細節:
^.*?
:匹配0或開頭的任何字符(懶惰) (rcp\\d+)
:匹配並捕獲rcp
后跟組#1中的1+位 .*
:匹配0或任何字符(貪婪) (_mon\\d+)
:匹配並捕獲_mon
后跟組#2中的1+位數 .*
:匹配任何東西直到最后
r'\\1\\2'
:通過組#1和組#2的反向引用替換字符串
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.