擅长:python、mysql、java
<p>要匹配第1行和第3行上的模式,可以使用两个捕获组,使用单个正则表达式:</p>
<pre><code>^([^\s@]+@[^\s@]+)\r?\n.*\r?\n(\+\d+)$
</code></pre>
<p>模式匹配:</p>
<ul>
<li><code>^</code>字符串的开头</li>
<li><code>([^\s@]+@[^\s@]+)</code>在<strong>组1</strong>中捕获类似电子邮件的模式(第一行只有一个@)</li>
<li><code>\r?\n.*\r?\n</code>匹配(不捕获)第二行</li>
<li><code>(\+\d+)</code>在<strong>第2组</strong></li>
<li><code>$</code>字符串的结尾</li>
</ul>
<p><a href="https://regex101.com/r/YD2ulb/1" rel="nofollow noreferrer">Regex demo</a></p>
<p>范例</p>
<pre><code>import re
regex = r"^([^\s@]+@[^\s@]+)\r?\n.*\r?\n(\+\d+)$"
s = ("imbad@regex.com\n"
"John Doe\n"
"+16073948374\n"
"2021-04-27T15:38:11+0000\n"
"14904")
match = re.match(regex, s, re.MULTILINE)
if match:
print(f"{match.group(1)}, {match.group(2)}")
</code></pre>
<p>输出</p>
<pre><code>imbad@regex.com, +16073948374
</code></pre>