擅长:python、mysql、java
<p>表达式<code>^Details: WARNING|CRITICAL|ERROR</code>被解释为这三个正则表达式的交替:</p>
<ul>
<li><code>^Details: WARNING</code></li>
<li><code>CRITICAL</code></li>
<li><code>ERROR</code></li>
</ul>
<p>因为<code>re.match</code>(不同于<code>re.search</code>)要求匹配从字符串的开头开始,所以它将无法匹配<code>Details: CRITICAL</code>和<code>Details: ERROR</code>。你知道吗</p>
<p>如果不需要捕获组,最好的解决方法是:</p>
<pre><code>r'^Details: (?:WARNING|CRITICAL|ERROR)'
</code></pre>
<p>与以下任意正则表达式匹配(如果要匹配):</p>
<ul>
<li><code>^Details: WARNING</code></li>
<li><code>^Details: CRITICAL</code></li>
<li><code>^Details: ERROR</code></li>
</ul>
<p>尽管<code>re.search</code>在这里工作得很好,但是将<code>re.match</code>与此正则表达式一起使用更有意义,因为您只在字符串的开头查找匹配项。你知道吗</p>