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中只选择匹配。对不起。