正则表达式字符串匹配未包装的所有内容

时间:2014-07-01 09:34:00

标签: regex match

我的正则表达式搜索有问题。我一直在寻找解决方案,我似乎无法找到问题的解决方案。

我有以下字符串:

1+[2/3]-23+2+<3,4,[22/7]+2;2,3,4>+2

我希望匹配未包含在[]或&lt;&gt;中的所有内容。所以在这个字符串中我会得到以下匹配:

1+
-23+2+
+2

我尝试了很多不同的东西。我尝试的最后一件事是

/[\]>]?.*[\[<]?/

1 个答案:

答案 0 :(得分:2)

在这种情况下,拆分比匹配更容易

使用此正则表达式拆分字符串:

\[[^\]]*\]|<[^>]*>

您将获得所需的数组。

在JavaScript中:

result = str.split(/\[[^\]]*\]|<[^>]*>/);

<强>解释

  • 匹配所有和分裂是同一枚硬币的两面。通过拆分,你可以删除你不想要的东西,并留下你想要的东西。
  • \[[^\]]*\]匹配完成[braces]:一个左括号,然后[^\]]*任意数量的字符,这些字符不是右括号,然后是右括号。
  • |
  • 同样,<[^>]*>匹配完成<tags>