正则表达式以匹配相同类型的引号

时间:2018-07-04 07:43:32

标签: regex bash regex-lookarounds

需要正则表达式以匹配以下字符串。

["mystring"] -- Match
['mystring'] -- Match
["mystring'] -- No match
['mystring"] -- No match

我正在尝试使用此^\[(\"|\').*(\"|\')]$,但这与没有兼容引号的字符串匹配。

谢谢。

1 个答案:

答案 0 :(得分:2)

似乎您需要

rx='^\[(['"'"'"])[^'"'"'"]*\1]$';
[[ $s =~ $rx ]] && echo "Matched!" || echo "No match!";

请参见online demo

模式为^\[(['"])[^'"]*\1]$,它与以下项匹配:

  • ^-字符串的开头
  • \[-一个[字符
  • (['"])-捕获组1:"'
  • [^'"]*-零个或多个'"个字符
  • \1-对捕获到组1中的值的反向引用
  • ]-一个]字符
  • $-字符串的结尾。