Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 用于排除[]内字母的正则表达式(方括号)_Regex - Fatal编程技术网

Regex 用于排除[]内字母的正则表达式(方括号)

Regex 用于排除[]内字母的正则表达式(方括号),regex,Regex,我试图使用正则表达式从密钥对值中找到值。值可以有[](方括号)。如果值中存在[](方括号),则我只想提取[]之外的字符 因此,目标字符串可以如下所示: key="val" or key="[val_notRequired1]val" or key="[val_notRequired1][val_notRequired2]val" 我最初使用的模式: key=("[^"]*"|'[^']*') 它提取“中的所有字符。因此,我尝试向我的模式添加一个非捕获组(?:[\[][^*][\

我试图使用正则表达式从密钥对值中找到值。值可以有[](方括号)。如果值中存在[](方括号),则我只想提取[]之外的字符

因此,目标字符串可以如下所示:

   key="val"  or  key="[val_notRequired1]val"  or  key="[val_notRequired1][val_notRequired2]val"
我最初使用的模式:

key=("[^"]*"|'[^']*')
它提取
中的所有字符。因此,我尝试向我的模式添加一个非捕获组
(?:[\[][^*][\]])
,以转义特殊字符
[
]
。但结果仍然是一样的。我接近了吗

如何在所有情况下仅提取
val
?? 我在javascript中使用正则表达式

谢谢。

也许这个:

key="(?:\[.*?\])*(.*?)"
它查找key=“然后查找任何数量的看起来像[…]的块,并捕获字符串的其余部分


请参阅,以了解其效果。您可以将鼠标悬停在项目上,每次都可以查看“val”的捕获情况。

或者,根据执行此操作的上下文,您可以只替换(/\[.\]/g',)-然后剩下的就是
val

key=“[val\u notRequired1][val\u notRequired2]val”;
val=key.replace(/\[.\]/g',);

console.log(val)
Chris,正则表达式不应该忽略键值对中值部分方括号内的任何内容吗?正则表达式不也包括它们吗?第一个括号是非捕获组。只有第二个括号捕获。它可以用lookbehinds和lookaheads重写,但这通常不是他是最简单的方法。我所说的只是查看您共享的链接的结果。所有3个字符串都在匹配。我希望不会捕获未捕获的组。将鼠标悬停在每个匹配上,您将看到“group#1:val”。好的。我只是习惯于在regexr中只选择匹配。对不起。