当前位置: 首页 > 面试题库 >

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

徐嘉勋
2023-03-14
问题内容

是否可以在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有一些regex或捕获组行为我不理解

  • 这不是重复的...在我看来。我不是在问它的有用性。如果可以的话,我要求澄清定义。不要投反对票,请解释一下。如果我认为这篇文章对其他读者来说很愚蠢,我会删除它。 其中显示是这样的 如果后面是什么?:应为“普通括号的非捕获版本”。匹配括号内的任何正则表达式,但在执行匹配或稍后在模式中引用后,无法检索组匹配的子字符串。” 为什么它仍然返回字符串“animal=”? (Python 3.6.3)f是:

  • 问题内容: 我正在研究启动多个进程和数据库连接的python脚本。我不时地想用信号杀死脚本,我想进行一些清理。 在Perl中,我可以这样做: 如何在Python中做类似的事情? 问题答案: 用以下方式注册你的处理程序: 代码改编自此处。

  • 在Python中,如何在非捕获组中捕获组?换句话说,如何重复包含捕获组的非捕获子模式? 例如,捕获导入字符串上的所有包名。例如,字符串: 导入熊猫、操作系统、系统 将返回“pandas”、“os”和“sys”。下面的模式捕获第一个包并到达第二个包: 从这里,我想重复捕获组并匹配以下字符的子模式,即。当我用一个非捕获组包围这个子模式并重复它时: 它不再捕捉里面的群体。

  • 我正在尝试学习Vue.js,并来到了一个实践示例,在这个示例中,我需要实现一个自定义指令,而该指令在“v-on”中起作用。这意味着我需要捕获自定义指令上的click事件并调用一个方法。 我想到的模板。 问题是我不知道如何在custom指令中捕获click事件。请原谅下面的笨拙代码。 有人能帮我理解这是怎么回事吗?我没有找到任何类似的例子。