擅长:python、mysql、java
<p>一个选项(如果你考虑了很多变化,比如.com.net等等,这会变得相当麻烦)可以是使用一个非贪婪的<code>+?</code>匹配,并列出所有允许使用<a href="https://www.regular-expressions.info/alternation.html" rel="nofollow noreferrer">alternation</a>的选项。你知道吗</p>
<pre><code>[\w.-]+?@[\w.-]+?\.(?:com|net)
</code></pre>
<p><a href="https://regex101.com/r/qqGIFa/1" rel="nofollow noreferrer">Regex demo</a>| <a href="https://ideone.com/eL4NNb" rel="nofollow noreferrer">Python demo</a></p>
<p><strong>注意</strong>重复字符类<code>[\w.-]+</code>也会允许例如<code>.-.-.@.-.-..com</code></p>
<p>例如</p>
<pre><code>import re
s = "email1@file1.comemail2@file1.comemail3@dom1.net"
regex = r"[\w.-]+?@[\w.-]+?\.(?:com|net)"
res = re.findall(regex, s)
print(res)
</code></pre>
<p>结果</p>
<pre><code>['email1@file1.com', 'email2@file1.com', 'email3@dom1.net']
</code></pre>