需要正则表达式以匹配以下字符串。
["mystring"] -- Match
['mystring'] -- Match
["mystring'] -- No match
['mystring"] -- No match
我正在尝试使用此^\[(\"|\').*(\"|\')]$
,但这与没有兼容引号的字符串匹配。
谢谢。
答案 0 :(得分:2)
似乎您需要
rx='^\[(['"'"'"])[^'"'"'"]*\1]$';
[[ $s =~ $rx ]] && echo "Matched!" || echo "No match!";
请参见online demo
模式为^\[(['"])[^'"]*\1]$
,它与以下项匹配:
^
-字符串的开头\[
-一个[
字符(['"])
-捕获组1:"
或'
[^'"]*
-零个或多个'
或"
个字符\1
-对捕获到组1中的值的反向引用]
-一个]
字符$
-字符串的结尾。