是否会返回正则表达式:
[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
,但这会使xpaths包含以下元素:
td[@width='113']
然后破坏:
json_fields = cleaned_defintion.match(/fields":(\[[^\]]*\])/)
这个问题有一个使用迭代方法的答案: Best way to find nested opening and closing tags