java - 在 Java 中使用正则表达式贪婪搜索字符串模式

标签 java regex pattern-matching

我有一个用例,我想在给定字符串中的 <、>、<=、>= 和 = 之间搜索运算符,并将表达式拆分为两部分,即右表达式和左表达式,然后求值在评估最终条件运算符之前分别对它们进行处理。

这可以从下面的例子中理解:

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但是>=运算符因为运算符 > 的存在而 split 独立。

我想评估子句(<|>|<=|=|>=)以贪婪的方式使得>=被视为一个单独的实体,如果它们一起出现,则会被列出。

最佳答案

你可以尝试简化为

 pattern1 = Pattern.compile("(.*?)(>=?|<=?|=)(.*)");

关于java - 在 Java 中使用正则表达式贪婪搜索字符串模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13093936/

相关文章:

java - 将多部分文件发送到 REST api 时出现 Spring 错误

java - 在 Play 中使用 Guice : Injection possible for static fields only

php - 使正则表达式全有或全无

regex - 在 MySQL (InnoDB) 中查找最佳匹配行

javascript - ES2015 符号是否适合代替字符串作为唯一常量值?

转义字母的Lua模式匹配问题

java - Eclipse (JAVA) 中的 Window Builder 无法加载

java - 将整数输入数组列表

mysql - SQL 替换所有指定的键

java - 正则表达式 : repeated concrete digit var vs repeated any digit var (Java)