如何在sed中指定非捕获组?

是否可以在sed中指定非捕获组?

如果是这样,怎么办?

回答:

答案是,截至撰写时,您不能-sed不支持它。Sed支持BRE和ERE,但不支持PCRE。

(注:一个答案指出BRE也称为POSIX sed,而ERE是通过sed -r的GNU扩展。有一点仍然是sed不支持PCRE。)

Perl适用于Windows或Linux

这里的例子

https://superuser.com/questions/416419/perl-for-matching-with-regular-

expressions-in-terminal

例如,来自Windows中的cygwin

$ echo -e 'abcd' | perl -0777 -pe 's/(a)(?:b)(c)(d)/\1/s'

a

$ echo -e 'abcd' | perl -0777 -pe 's/(a)(?:b)(c)(d)/\2/s'

c

尽管有Windows程序,但该程序可以在命令行上进行搜索和替换,并且支持PCRE。它称为rxrepl。它不是sed,但是可以搜索并替换为PCRE支持。

C:\blah\rxrepl>echo abc | rxrepl -s "(a)(b)(c)" -r "\1"

a

C:\blah\rxrepl>echo abc | rxrepl -s "(a)(b)(c)" -r "\3"

c

C:\blah\rxrepl>echo abc | rxrepl -s "(a)(b)(?:c)" -r "\3"

Invalid match group requested.

C:\blah\rxrepl>echo abc | rxrepl -s "(a)(?:b)(c)" -r "\2"

c

C:\blah\rxrepl>

作者(不是我)在这里的答案中提到了他的程序https://superuser.com/questions/339118/regex-replace-

from-command-line

它具有非常好的语法。

使用的标准对象是perl或人们使用的几乎所有其他编程语言。

以上是 如何在sed中指定非捕获组? 的全部内容, 来源链接: utcz.com/qa/401245.html

回到顶部