(e)grep和原子分组

(e)grep和原子分组

我试图了解正确的用法 »原子分组«又名»独立子表达式«又名»非回溯子模式« [这是我为同一件事找到的术语,但这并没有使它变得不那么复杂]

  • egrep '123(?>fruit|juiceomatic)machine'意思是:寻找 123fruitjuiceomaticmachine
  • 停止尝试匹配[其余]圆括号的内容 if123后面跟着除fruit!以外的任何内容

它是否正确?我错过了什么重要的事情吗?

我问这个问题是因为我大多数时候都达到了预期的结果,但我不能 100% 确定这是因为我做得对还是我只是做了幸运的猜测。

答案1

这不是扩展正则表达式 (ERE)。egrep会将其解释为123后跟>fruitor juiceomatic?被忽略)后跟machine。这意味着它将匹配:

123>fruitmachine
123>juiceomaticmachine

但不是:

123fruitjuiceomaticmachine

(?>...)符号来自PCRE,意思是非捕获原子团, 看pcresyntax(3)。您可以将它们与 GNU grep 和-P开关一起使用。

如果我理解正确的话,你需要123遵循,fruit而这又可能是紧随其后,juiceomatic或者什么也不跟随。在这种情况下,我认为123fruit(|juiceomatic)machine这就是您想要的 ERE。

相关内容