gpt4 book ai didi

regex - 无法将正则表达式和列表结果放在一起

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:49 24 4
gpt4 key购买 nike

我对正则表达式还很陌生,如果这个问题看起来过于笼统,我深表歉意。

场景:

我有一组文件,我在其中隔离了一个特定的模式,比如 [mainpattern]。在这种模式的每次出现中,[mainpattern] 前面都有各种 [subpattern] 出现,前面有一个右箭头,后面有一个点:

cat *.txt | grep "mainpattern"

... [>][子模式 1][.][主模式]...

... [>][子模式2][.][主模式]...

...

... [>][子模式N][.][主模式]...

我基本上是在尝试生成一个输出,其中所有子模式都被唯一列出(没有重复)。有任何想法吗?我一直无法弄清楚如何编码“从 grep 输出中获取前面的”。

非常感谢

最佳答案

您可以使用 PCRE 风格的正则表达式 (?<=>)[^>.]*(?=[.]mainpattern)-oP选项(P 用于 PCRE 和 o 用于输出匹配模式):

grep -oP '(?<=>)[^>.]*(?=[.]mainpattern)'

模式匹配:

  • (?<=>) - 字符串中以 > 开头的位置
  • [^>.]* - 匹配零个或多个(匹配 1 个或多个使用 + )除 > 以外的字符和 .
  • (?=[.]mainpattern) - 需要存在 . 的正面前瞻和 mainpattern在消费(前面的)子模式之后。

关于regex - 无法将正则表达式和列表结果放在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40340996/

24 4 0