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