可能重复:
正则表达式匹配外括号
是否有一个正则表达式会返回:
[aaaa[aaa]aaaa]
从
aaa"fields":[aaaa[aaa]aaaa]aaa
这是在从还包含 XPath 的 JSON 字符串中获取数组的上下文中。XPath 与数组一样具有左方括号和右方括号,因此检索由左方和右方括号分隔的字符串的普遍问题,它也包含作为子字符串......我希望这是有道理的。
我认为你需要跟踪打开的方括号对的数量,只有当它达到 0 时,你才会返回字符串的那部分。这需要一个循环,但我想知道是否有纯正则表达式解决方案。
我的第一次尝试是:
cleaned_defintion = defintion.gsub(/\[\d*\]/,"")
它将这样的 XPath 转换为:html[1]/body[1]/form[1]/div[7]/div[2]/input[1]
但这html/body/form/div/div/input
将使 xpath 带有以下元素:
td[@width='113']
然后打破:
json_fields = cleaned_defintion.match(/fields":(\[[^\]]*\])/)
这个问题有一个使用迭代方法的答案: Best way to find nested opening and closing tags