如何在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