我有以下表达式
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
部分为止?
谢谢
答案 0 :(得分:2)
您可以使用两个匹配组和join
进行匹配:
>>> ''.join(re.findall(r'(rcp\d{2}).*?(\_mon\d{2})', s)[0])
'rcp45_mon10'
答案 1 :(得分:2)
您可以在此处使用<form action="georgeWelcomePage.php" method="post">
<div id="main">
<div class="row">
<div>
<label for="name">Name</label><br>
<input type="text" name="name">
</div>
<div>
<label for="company">Company</label><br>
<input type="text" name="company">
</div>
</div>
<div class="row">
<div>
<label for="visiting">Visiting</label><br>
<input type="text" name="visiting">
</div>
<div>
<label for="badge">Badge</label><br>
<input type="text" name="badge">
</div>
</div>
<div class="row">
<input type="submit" value="Sign In" class="btn">
</div>
</form>
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+)
,后跟#1组中的1个以上数字rcp
:匹配0或任意字符(贪婪).*
:匹配并捕获(_mon\d+)
,后跟#2组中的1个以上数字 _mon
:匹配所有内容
.*
:用组#1和组#2的反向引用替换字符串