擅长:python、mysql、java
<p>您可以将<code>.*</code>添加到负前瞻<code>(?!.*SWEC)</code>,这样正则表达式将断言字符序列不匹配其后面紧跟单词<code>SWEC</code>的任何字符(换行符除外)。这种消极的前瞻不需要进入您的正则表达式捕获组,但它有助于减少查找有效匹配的步骤数</p>
<pre class="lang-py prettyprint-override"><code>import re
urls = [
'<a href=https://energyplus.net/weather-download/asia_wmo_region_2/IND//IND_Kota.424520_ISHRAE/IND_Kota.424520_ISHRAE.epw>Download Weather File</a>',
'<a href=https://energyplus.net/weather-download/europe_wmo_region_6/ESP//ESP_Alicante.083600_SWEC/ESP_Alicante.083600_SWEC.epw>Download Weather File</a>'
]
for url in urls:
match = re.search(r'href=[\'"]?((?!.*SWEC)[^\'" >]+)', url)
if match:
url = match.group(1)
print(url)
# https://energyplus.net/weather-download/asia_wmo_region_2/IND//IND_Kota.424520_ISHRAE/IND_Kota.424520_ISHRAE.epw
</code></pre>
<p>Regex101<a href="https://regex101.com/r/3Q4Wya/1" rel="nofollow noreferrer">example</a></p>