我正在尝试使用正则表达式从KEY PAIR VALUE中找到VALUE。 VALUE可以有[](方括号)。如果VALUE中存在[](方括号),那么我只想提取[]之外的字符。
所以目标字符串可以如下:
key="val" or key="[val_notRequired1]val" or key="[val_notRequired1][val_notRequired2]val"
我最初使用的模式:
key=("[^"]*"|'[^']*')
提取" "
内的所有字符。所以我尝试在我的模式中添加一个非捕获组(?:[\[][^*][\]])
来逃避特殊字符[
]
。但结果仍然相同。我接近了吗?
如何在所有情况下仅提取val
?
我在javascript中使用正则表达式。
感谢。
答案 0 :(得分:4)
也许这个:
key="(?:\[.*?\])*(.*?)"
它查找key =“然后查找[...]的任意数量的块,并捕获字符串的其余部分。
有效,请参阅http://regexr.com/3cse1。您可以将鼠标悬停在项目上,以便每次都能看到“val”的捕获。
答案 1 :(得分:1)
或者,根据您执行此操作的上下文,您可以replace(/\[.*?\]/g, '')
- 然后剩下的是val
。
key = "[val_notRequired1][val_notRequired2]val";
val = key.replace(/\[.*?\]/g, '');
console.log(val);