<p>我相信<code>|</code>元字符的优先级只有分组结构<code>()</code>(在某种程度上,我假设字符类<code>[]</code>分隔符,它将它转换为文字<code>|</code>字符-但是它是文字,而不是“or运算符”)。你知道吗</p>
<P>它就像短路、“或”操作符(^ {< CD5>})、爪哇、C/C++、C语言、JavaScript等等。或visualbasic中的<code>OrElse</code>)。您还可以将文本字符之间的nothing(零空格,零字符)看作具有更高优先级的“后跟”“运算符”,但这有点像是一种延伸。你知道吗</p>
<p>基本上,表达式<code>^Details: WARNING|CRITICAL|ERROR</code>被解释为:</p>
<pre><code>^Details: WARNING # assert at the beginning, then match literally "Details: WARNING"
| # -OR-
CRITICAL # match "CRITICAL"
| # -OR-
ERROR # match "ERROR"
</code></pre>
<p>而表达式<code>^Details: (WARNING|CRITICAL|ERROR)</code>被解释为:</p>
<pre><code>^Details: # assert at the beginning, then match literally "Details: "
( # begin capture group
WARNING # match literally "WARNING"
| # -OR-
CRITICAL # match literally "CRITICAL"
| # -OR-
ERROR # match literally "ERROR"
) # end capture group
</code></pre>
<p>而表达式<code>^Details: (?:WARNING|CRITICAL|ERROR)</code>仅被稍微不同地解释为:</p>
<pre><code>^Details: # assert at the beginning, then match literally "Details: "
(?: # begin match (non-capturing) group
WARNING # match literally "WARNING"
| # -OR-
CRITICAL # match literally "CRITICAL"
| # -OR-
ERROR # match literally "ERROR"
) # end match group
</code></pre>
<p>希望这能回答你所有的问题!你知道吗</p>