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

本文关键字:顺序 运算符 正则表达式 | 更新日期: 2023-09-27 18:36:11

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

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

左到右,第一个备选方案匹配"获胜",其他选项不检查。这是典型的 NFA 正则表达式行为。交页面提供了该行为 regular-expressions.info 很好的描述。

请注意,RegexOptions.RightToLeft只让正则表达式引擎从右到左检查输入字符串,但修饰符不会影响正则表达式引擎处理模式本身的方式。

让我举例说明:如果您有一个(aaa|bb|a)正则表达式并尝试使用 Regex.Matchbbac 中找到匹配项,您将获得的值bb,因为a替代方案出现在 bbb 之后。如果您使用 Regex.Matches ,您将获得所有匹配项,并且 bba 都将出现在您的结果中。

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