在正则表达式中打印某些部分?

时间:2011-08-29 15:47:16

标签: regex bash

例如,一个文件包含多个字符串,其中一些字符串如下所示:
--EX "ABCDEFG"

我创建了以下正则表达式以查看该行是否匹配:
^--EX\ \".*\"$
我现在的问题是,我可以以某种方式提取.*的内容以获得ABCDEFG吗? 正则表达式是否适用于此?

3 个答案:

答案 0 :(得分:2)

在您想要获得的部分周围加上括号。

^--EX\ \"(.*)\"$

然后在你的代码中,它将匹配1,正则表达式的大多数实现意味着匹配0是完全匹配,匹配1将是第一组括号,依此类推。

答案 1 :(得分:1)

你可以通过sed获得它:

$ echo "--EX "ABCDEFG"" | sed 's/^--EX \(.*\)$/\1/'
ABCDEFG

答案 2 :(得分:1)

在命令行中,您必须精确输入命令,如下所示:

sed -e "s/^--EX \"\(.*\)\"$/\\1/g" filename