我有一个用例,我希望在给定字符串中的<,>,< =,> =和=中搜索运算符,并将表达式拆分为2个部分,即右表达式和在评估最终条件运算符之前,左表达式并单独计算它们。
这可以从以下示例中理解:
Pattern pattern1 = Pattern.compile("(.*?)(<|>|<=|=|>=)(.*)");
Matcher matcher2 = pattern1.matcher("4>=5");
while (matcher2.find()) {
System.out.println(matcher2.group(1) + ";" + matcher2.group(2)+ ";" + matcher2.group(3));
}
输出:
4;>;=5
预期输出为4;>=;5
,但>=
运算符由于运算符>
独立存在而被拆分。
我想以贪婪的方式评估条款(<|>|<=|=|>=)
,以便>=
被视为单个实体,并且如果它们一起出现则被列为下载。
答案 0 :(得分:2)
你可以尝试简化到
pattern1 = Pattern.compile("(.*?)(>=?|<=?|=)(.*)");
答案 1 :(得分:1)
String testt = "4>=5";
System.out.println(testt.replaceAll("(.*?)(>=?|<=?|=)(.*)", "$1;$2;$3"));
易于理解,您将立即更换所有内容。你有一个错误会停止获得&lt; =如果它找到&lt;在它之前,所以只需将那些2&lt; =和&gt; =放在第一个位置。