簡體   English   中英

不匹配正則表達式中的一定數量的字符

[英]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

RegEx演示

細節:

  • ^.*? :匹配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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM