【问题标题】:Which POSIX flavor of regex does Perl use?Perl 使用哪种 POSIX 风格的正则表达式?
【发布时间】:2011-02-05 08:22:35
【问题描述】:

具体来说,我使用的是 Linux 命令:

$ 查找 . -regextype posix-extended -regex '' ...

我只是想确保我使用的 POSIX 类型是 Perl 使用的类型,因为这是迄今为止我最熟悉的类型。

【问题讨论】:

  • Perl 已经为 POSIX 正则表达式定义了许多扩展(即它根本不是 POSIX)。我认为没有 POSIX 等价物。您想使用哪些特定的正则表达式功能?
  • 这里的区别是 \{ 和 \) 等的语法。扩展的posix是你需要的。
  • 这就像问悍马是什么类型的摩托车一样。尽管它们执行相似的功能,但它们确实是不同的东西。

标签: regex linux perl find posix


【解决方案1】:

Perl 的正则表达式引擎是 Perl 的正则表达式引擎。 perl 定义 Perl。

详情请见perldoc perlreref

【讨论】:

    【解决方案2】:

    Perl 使用 Perl 正则表达式,而不是 POSIX 正则表达式。你可以自己比较语法,例如regex(7)

    【讨论】:

      【解决方案3】:

      Perl 已经为正则表达式定义了自己的标准。例如,有诸如 PCRE 之类的系统,它代表 Perl Compatible Regular Expressions。

      【讨论】:

      • +1,但请注意 PCRE 并不完全兼容 Perl。
      • 这个名称具有误导性,因为 PCRE 仅在您考虑 PCRE 设置的子集和 Perl 的正则表达式工具的子集时才与 Perl 兼容。 en.wikipedia.org/wiki/PCRE
      • 已修复 - 你们可以编辑它,我不会被冒犯的。 :)
      【解决方案4】:

      Perl 的正则表达式更像 Posix 扩展的正则表达式。基本的 posix 正则表达式使用 ({ 来匹配实际字符,并将 \(\{ 作为特殊字符,但 Posix 扩展的使用 ({ 与 Perl 中的含义相同和\(\{ 匹配实际字符,与Perl 相同。所以posix-extended是你想要的。

      【讨论】:

        【解决方案5】:

        根据perldoc perlhist,Perl 0(“分类。不要问。”)使用基本的正则表达式。从 87 年 12 月的 Perl 1.000 开始,所有版本都使用了扩展的正则表达式(并在这些表达式上进行了扩展......)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-14
          • 1970-01-01
          • 1970-01-01
          • 2023-03-18
          • 1970-01-01
          • 1970-01-01
          • 2016-07-20
          • 2017-02-08
          相关资源
          最近更新 更多