正则表达式排除中间开始和结束标记

时间:2012-08-16 14:04:13

标签: ruby regex

  

可能重复:
  Regular Expression to match outer brackets

是否会返回正则表达式:

[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

0 个答案:

没有答案