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