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

标签 regex match

我的正则表达式搜索遇到一些问题。我已经寻找解决方案有一段时间了,但似乎找不到解决我的问题的方法。

我有以下字符串:

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/

相关文章:

java - 操作 mongodb 中与正则表达式搜索匹配的字符串

javascript - 从字符串中提取信息

shell - 文件中的 awk 搜索模式。替换匹配的行并打印,因为它不匹配

python - 如何在Python中使用正则表达式?

regex - 下面的两个 sed 命令有什么区别?

java - 需要正则表达式帮助

javascript - 正则表达式(正则四选三逻辑)

regex - 如果 URL 的字符长度小于一定数量的字符,如何重写 URL

javascript - 从字符串中提取分隔的数字组

php - 忽略 preg_match_all 输出中的字符