.NET Regex类记录的运算符优先级在哪里?

时间:2012-02-21 21:56:05

标签: .net regex operator-precedence

.NET Regex类记录的运算符优先顺序在哪里?

我看到this,但这是针对JScript的。

此外,它似乎不受RegexOptions.ECMAScript的影响,但确认会有所帮助。

2 个答案:

答案 0 :(得分:1)

我认为真正的答案并不像你想的那么简单。简短(和不完整)答案就是“所有表达式都是从左到右评估”......

对于长篇答案,请到这里。

http://msdn.microsoft.com/en-us/library/e347654k.aspx

  

.NET Framework正则表达式引擎是一种回溯常规   表达匹配器结合了传统的不确定性   有限自动机(NFA)引擎......传统的NFA引擎执行   模式匹配,他们的处理顺序是由常规驱动的   表达模式。当它处理特定的语言元素时,   引擎使用贪心匹配;也就是说,它与之相匹配   尽可能输入字符串。但它也拯救了它的状态   成功匹配子表达式。如果匹配最终失败,   引擎可以返回保存状态,以便可以尝试其他操作   匹配。

编辑:忘记回答问题的第二部分。

关于RegexOptions.ECMAScript,您可以参考以下文档:

http://msdn.microsoft.com/en-us/library/yd1hzczs.aspx

  

ECMAScript和规范正则表达式的行为有所不同   在三个方面:字符类语法,自引用捕获   组,八进制与反向引用解释。

看起来“订单”不会受到影响,但可能还有其他问题。文档很好地说明了差异。

答案 1 :(得分:1)

这是很久以前的问题,但没有回答。

.Net正则表达式运算符预定义在正则表达式语法页面1的底部定义。