Perl正则表达式的优先规则是什么?

时间:2016-03-07 06:37:29

标签: regex perl

我可以找到Perl regular expressions的优先规则的官方参考。我能找到的仅是Know the precedence of regular expression operators。但是,它不是perldoc给出的官方参考。

1 个答案:

答案 0 :(得分:5)

正则表达式只有两个二元运算符,其中一个是隐式运算符而不是符号表示。正则表达式也有许多一元运算符,但由于对其操作数的限制,它们的优先级没有实际意义。这使得谈论优先权真的很奇怪。

使用以下陈述更简单地传达您所寻求的信息:

  • 量词修改单个原子。
  • 量词修饰符修改单个量词。
  • 除了它们所在的parens之外,它是无限制的。

上述信息在perlretut中以这种或那种方式传达。

也就是说,可以构建一个优先级表。由于上述陈述传达了您需要的所有信息,因此可以从中构建优先级表。它是以下内容:

  1. 原子(例如a\n\^.^\w[...],{{ 1}},\1
  2. 后缀一元运算符(量词和量词修饰符)
  3. 隐含"其次是" (可能量化的)原子之间的算子
  4. 轮替
  5. 这与您链接的页面中的图表相匹配。

    为了好玩,以下是BNF:

    (...)