Bash:正则表达式用于查找具有双引号的模式

时间:2016-03-03 04:58:00

标签: regex bash shell

我正在尝试在我的shell脚本中使用正则表达式来查找子字符串。

原始字符串:

"relative-to="jboss.server.base.dir" scan-enabled="true" scan-interval="0""

尝试查找以下子字符串:

"scan-enabled="true""

代码:

str="relative-to=\"jboss.server.base.dir\" scan-enabled=\"true\" scan-interval=\"0\""
reg='scan-enabled.*"'
[[ "$str" =~ $reg ]] && echo $BASH_REMATCH

但它正在回归,

scan-enabled="true" scan-interval="0"

有人可以请教如何使用正则表达式搜索涉及双引号的模式吗?

Bash版本:4.1.2(1)-release

1 个答案:

答案 0 :(得分:2)

如果您想匹配整个表达式scan-enabled="true"scan-enabled="false",那么您可以试试这个:

reg='(scan-enabled=\"[^"]*\")'
[[ "$str" =~ $reg ]] && echo ${BASH_REMATCH[1]}

变量${BASH_REMATCH[1]}将匹配正则表达式中的第一个捕获组匹配。在这种情况下,整个正则表达式包含在括号中,因此这是第一个捕获组。

您可以通过以下链接探索此正则表达式:

Regex101