我正在尝试在我的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
答案 0 :(得分:2)
如果您想匹配整个表达式scan-enabled="true"
或scan-enabled="false"
,那么您可以试试这个:
reg='(scan-enabled=\"[^"]*\")'
[[ "$str" =~ $reg ]] && echo ${BASH_REMATCH[1]}
变量${BASH_REMATCH[1]}
将匹配正则表达式中的第一个捕获组匹配。在这种情况下,整个正则表达式包含在括号中,因此这是第一个捕获组。
您可以通过以下链接探索此正则表达式: