擅长:python、mysql、java
<p>我能想到的一个解决方案是为HTTP url和您的模式形成一个组合模式,然后相应地过滤匹配项:</p>
<pre><code>import re
t = "http://www.egg1.com http://egg2.com egg3 egg4"
p = re.compile('(http://\S+)|(egg\d)')
for url, egg in p.findall(t):
if egg:
print egg
</code></pre>
<p>印刷品:</p>
<pre>
egg3
egg4
</pre>
<hr/>
<p><strong>更新:</strong>要将此习惯用法与<code>re.sub()</code>一起使用,只需提供一个筛选函数:</p>
<pre><code>p = re.compile(r'(http://\S+)|(egg(\d+))')
def repl(match):
if match.group(2):
return 'spam{0}'.format(match.group(3))
return match.group(0)
print p.sub(repl, t)
</code></pre>
<p>印刷品:</p>
<pre>
http://www.egg1.com http://egg2.com spam3 spam4
</pre>