我有以下表达式
diff_pr_EUR-44_cordex_rcp45_mon_ave_2048-2060_minus_2005-2017_mon10_ave1_withsd.nc
我想使用regex
提取并生成以下字符串
rcp45_mon10
到目前为止,我已经在网上试过了 regex tester
rcp\d\d[^.]+mon\d+
提取的内容超出了我的需要...
rcp45_mon_ave_2048-2060_minus_2005-2017_mon10
如何让正则表达式跳过后续字符,直到它到达 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 or of 开头的任何字符(惰性)(rcp\d+)
:匹配并捕获rcp
后跟第 1 组中的 1+ 个数字.*
:匹配0或任意字符(贪心)(_mon\d+)
:匹配并捕获_mon
后跟第 2 组中的 1+ 个数字.*
:匹配任何内容直到结束r'\1\2'
:用组 #1 和组 #2 的反向引用替换字符串
关于python - 不匹配正则表达式中的一组字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52100291/