首页 > 解决方案 > 正则表达式匹配除两个括号之间的内容之外的所有内容

问题描述

我搜索了很多,但没有找到我的具体案例。我需要一个正则表达式来匹配所有内容,除了两个尖括号之间写的内容:

我找到了如何匹配除尖括号之外的所有内容: String regex="[^<>]*";

或者如何匹配两个尖括号之间的内容: \<(.*?)\><([^>]+)>

这很好,但我需要正好相反。我尝试玩 ^ (否定)但没有成功。

例如: Fara Foo <not be selected>;another <also not be selected>

应该返回: Fara Foo <>;another <>

整个事情应该在java中工作。

更新:解决replaceAll(...)方案对我没有帮助,因为我想在 replaceAll(...) 调用中使用正则表达式 :-) 所以我真的需要正则表达式。

因为它在评论中被问到:在 java 中有某些字符串操作,如 replaceAll() 或 split() 直接采用正则表达式。还有另一种方法是使用Patternand MatcherreplaceAll()它使用起来比模式匹配器更方便。这就是为什么我想使用“负”正则表达式来使用replaceAll ...

标签: javaregex

解决方案


达到预期结果的一种方法是使用string.replaceAll去除尖括号之间的内容,例如:

String strIn = "Fara Foo <not be selected>;another <also not be selected>; ...";
String newStr = strIn.replaceAll("<([^>]+)>", "<>");

推荐阅读