Bash:Regex,用于查找具有双引号的模式

Bash:Regex,用于查找具有双引号的模式,regex,bash,shell,Regex,Bash,Shell,我试图在shell脚本中使用regex来查找子字符串 原始字符串: "relative-to="jboss.server.base.dir" scan-enabled="true" scan-interval="0"" 正在尝试查找以下子字符串: "scan-enabled="true"" 代码: 但它正在回归 scan-enabled="true" scan-interval="0" 有人可以帮助我们如何使用正则表达式搜索包含双引号的模式吗 Bash版本:4.1.2(1)-发布如果要匹配

我试图在shell脚本中使用regex来查找子字符串

原始字符串:

"relative-to="jboss.server.base.dir" scan-enabled="true" scan-interval="0""
正在尝试查找以下子字符串:

"scan-enabled="true""
代码:

但它正在回归

scan-enabled="true" scan-interval="0"
有人可以帮助我们如何使用正则表达式搜索包含双引号的模式吗


Bash版本:4.1.2(1)-发布

如果要匹配整个表达式
scan enabled=“true”
scan enabled=“false”
,则可以尝试以下操作:

reg='(scan-enabled=\"[^"]*\")'
[[ "$str" =~ $reg ]] && echo ${BASH_REMATCH[1]}
变量
${BASH_REMATCH[1]}
将匹配正则表达式中的第一个捕获组匹配。在本例中,整个正则表达式都包含在括号中,因此这是第一个捕获组

您可以通过以下链接浏览此正则表达式:


感谢Tim Biegeleisen的努力。我试图使用这个,reg='scan-enabled=\“*\”[[“$str”=~$reg]]&&echo$BASH\u重新匹配,但它仍然返回“scan-enabled=”true scan interval=“0”“否。如果使用
$BASH\u REMATCH
我相信它将始终提供整个输入字符串。哦,问题是启用扫描可以有任何值,我希望捕获所有值。因此,我使用正则表达式'scan enabled=\“*\”,您到底想捕获什么?是否要测试是否存在启用扫描的
或此属性的特定值?如果是后者,请尝试使用我答案的第二部分。如果我不清楚,请道歉。我想捕获“scan enabled=“true”。如果scan enabled的值为“false”,那么我想捕获“scan enabled=“false”。
reg='(scan-enabled=\"[^"]*\")'
[[ "$str" =~ $reg ]] && echo ${BASH_REMATCH[1]}