我的正则表达式搜索遇到一些问题。我已经寻找解决方案有一段时间了,但似乎找不到解决我的问题的方法。
我有以下字符串:
1+[2/3]-23+2+<3,4,[22/7]+2;2,3,4>+2
我想匹配所有未包含在 [] 或 <> 中的内容。所以在这个字符串中我会得到以下匹配:
1+
-23+2+
+2
我尝试了很多不同的事情。我尝试的最后一件事是
/[\]>]?.*[\[<]?/
最佳答案
在这种情况下,拆分比匹配更容易
使用此正则表达式来分割字符串:
\[[^\]]*\]|<[^>]*>
您将得到您想要的数组。
在 JavaScript 中:
result = str.split(/\[[^\]]*\]|<[^>]*>/);
说明
- 全匹配和 split 是同一枚硬币的两面。通过拆分,您可以删除不需要的内容,并留下您想要的内容。
-
\[[^\]]*\]
匹配完成[braces]
:左大括号,然后[^\]]*
任意数量的不是右大括号的字符,然后是右大括号。 - 或
|
- 同样,
<[^>]*>
匹配完成<tags>
关于正则表达式字符串匹配所有未包装的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24506932/