【发布时间】:2026-01-10 10:50:01
【问题描述】:
我写了一个正则表达式来匹配python中的连字符
regexp = r"[a-z]+(?:-[a-z]+)*"
它匹配带有零个或多个连字符的单词。例如abc、acd-def、x-y-y 等。 但是,我找不到这个分组运算符 ?: 用于 shell(例如与 grep 一起使用)。在我看来,这只是 python 正则表达式的一个特性,而不是标准正则表达式。
谁能告诉我如何在 shell 中编写相同的正则表达式?
【问题讨论】:
-
这是一个标准的non-capturing group。如果不能在 bash 中使用,请使用捕获组:
[a-z]+(-[a-z]+)*。 -
删除非捕获组或为 grep 使用
-P标志。grep -Po "[a-z]+(?:-[a-z]+)*" file -
我认为这是How to use non-capturing groups in grep?的副本,但有一点疑问......