(..|. .. .|..)
运算符中表达式的优先级顺序是什么 - 从左到右,从右到左或其他什么?
左到右,第一个备选方案匹配"获胜",其他选项不检查。这是典型的 NFA 正则表达式行为。交替页面提供了该行为 regular-expressions.info 很好的描述。
请注意,RegexOptions.RightToLeft
只让正则表达式引擎从右到左检查输入字符串,但修饰符不会影响正则表达式引擎处理模式本身的方式。
让我举例说明:如果您有一个(aaa|bb|a)
正则表达式并尝试使用 Regex.Match
在 bbac
中找到匹配项,您将获得的值bb
,因为a
替代方案出现在 bbb
之后。如果您使用 Regex.Matches
,您将获得所有匹配项,并且 bb
和 a
都将出现在您的结果中。
此外,从左到右检查正则表达式模式的事实清楚地表明,在非锚定替代组中,替代方案的顺序很重要。如果您使用 (a|aa|aaa)
正则表达式与 abbccaa
匹配,第一个a
替代方案将是匹配字符串中的每个a
(请参阅正则表达式演示)。添加单词边界后,您可以按任何顺序放置替代项(请参阅另一个正则表达式演示)。