一尘不染

正则表达式运算符的顺序(.. | ..….. | ..)

c#

(..|. .. .|..)运算符中表达式的优先级顺序是什么-从左到右,从右到左或其他?


阅读 472

收藏
2020-05-19

共1个答案

一尘不染

从左到右,第一个备选匹配“胜利”,不检查其他。这是典型的NFA正则表达式行为。在regular-expressions.info 备用
页面上
提供了有关该行为的良好描述。

请注意,RegexOptions.RightToLeft仅使regex引擎从右到左检查输入字符串,修饰符不会影响regex引擎如何处理模式本身。

让我说明一下:如果您有一个(aaa|bb|a)正则表达式,并尝试在bbacusing中找到一个匹配项,Regex.Match则将获得的值是bb因为a出现在之后bbb。如果你使用Regex.Matches,你会得到所有比赛,都bba会在你的结果降落。

同样,从左到右检查正则表达式模式的事实清楚表明, 在非锚定替代组内,替代的顺序很重要
。如果您使用(a|aa|aaa)regex进行匹配abbccaa,则第a一种选择是匹配a字符串中的每个(请参阅regex演示)。添加单词边界后,您可以按任何顺序放置替代项(请参阅另一个regex演示)。

2020-05-19