【问题标题】:Find command regextype difference between 'posix-extended' and 'posix-egrep'查找“posix-extended”和“posix-egrep”之间的命令正则表达式差异
【发布时间】:2018-08-04 16:37:37
【问题描述】:

标题确实说明了一切。谁能指出我在哪里可以找到 find 命令可用的不同正则表达式类型的描述。我能够找到它们的列表,但没有解释或比较。特别是,“posix-egrep”和“posix-extended”之间有什么区别,因为egrep是根据扩展集进行正则表达式匹配的工具?

【问题讨论】:

  • GNU 实现了对 ERE 的扩展。例如,用于词首和词尾的 \<\> 不是基线 POSIX 标准的一部分。不是说这些是差异,而是肯定说存在差异。
  • ...也就是说,这更像是一个 Unix & Linux 问题,而不是 StackOverflow 问题。请注意stackoverflow.com/help/on-topic 中的“软件开发独有”这一短语——如果命令行用户(而不是脚本使用)对某个问题感兴趣,那么它就超出了我们的范围。
  • 要查看posix-extendedposix-egrep 的区别,请查看:gnu.org/software/findutils/manual/html_node/find_html/…,它们相隔一页。

标签: regex shell grep sh


【解决方案1】:

让我通过向您展示我如何准确定位信息来指导您如何使用 linux 的文档来自我回答此类问题。

  1. 我运行man find通过搜索关键字regular来查看一些正则表达式类型的基本信息,然后我看到了:

-正则表达式类型

更改 -regex 和 -iregex 测试所理解的正则表达式语法,这些测试稍后会在命令行中出现。要查看已知的正则表达式类型,请使用 -regextype 帮助。 Texinfo 文档(另请参见)解释了各种正则表达式的含义和区别。

假设这是你要找的,文档说它在Texinfo,所以我做下一步;

  1. 运行info find。然后搜索regextype 找到它的正确部分。然后我到达了:

'--正则表达式'

此选项更改正则表达式的语法和行为 由“--regex”选项使用。 *note 正则表达式:: 更多 有关 GNU 理解的正则表达式方言的信息 findutils。

它要求参考名为 note Regular Expressions 的进一步文档,您可以在光标位于其上时按 Enter 键进入该文档。

  1. 万岁!
  • 菜单:

  • findutils-默认正则表达式语法::

  • awk 正则表达式语法::

  • egrep 正则表达式语法::

  • emacs 正则表达式语法::

  • gnu-awk 正则表达式语法::

  • grep 正则表达式语法::

  • posix-awk 正则表达式语法::

  • posix-basic 正则表达式语法::

  • posix-egrep 正则表达式语法::

  • posix 扩展正则表达式语法::

最后两项正是您要问的。阅读它们,然后您会发现系统已经为您提供了正确的答案。

【讨论】:

  • 哦,我的... --regextype type Changes the regular expression syntax understood by -regex and -iregex tests which occur later on the command line. Currently-implemented types are emacs (this is the default), posix-awk, posix-basic, posix-egrep and posix-extended. info find 真的如你所说。谢谢。
【解决方案2】:

根据信息文档,它们非常相似,但有以下区别:

posix-egrep

字符'.'匹配任何单个字符。

字符“*”、“+”和“?”在正则表达式中的任何地方都是特殊的。

间隔由“{”和“}”指定。无效间隔被视为文字,例如“a{1”被视为“a{1”

posix-extended

字符'.'匹配除空字符以外的任何单个字符。

'*'、'+' 和 '?'在正则表达式中的任何时候都是特殊的 除了以下不允许的地方:

  1. 在正则表达式的开头
  2. 在开组之后,用 '(' 表示
  3. 在交替运算符“|”之后

间隔由“{”和“}”指定。无效的间隔,例如 'a{1z' 不被接受。

【讨论】:

    猜你喜欢
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多