.com/r/IohlS8/1" rel="nofollow noreferrer">this是我的正则表达式,我正在try 使用此正则表达式查找双引号内字符串"VARIANT"的所有匹配项,但如果双引号内有2个匹配项,则只接受最后一个.我的正则表达式基本上是试图找到写在双引号中的字符串"VARIANT",我试着这样写,但也不起作用:\\".*(variant*).*\\"这是我的代码:

String str_regex = "\\".*(variant).*\\"";
Matcher str_matcher = Pattern.compile(str_regex).matcher(joined);
while(str_matcher.find()) {
    System.out.println(str_matcher.group());
}

推荐答案

您可以匹配双引号内字符串的所有匹配项,然后计算匹配项中的variant个匹配项:

String s = "variant \"if and only if 5 divides by i without remainder, then it prints \\\"i + \\\" variant: \\\" + variant\\\"\" variant";

        
Pattern pattern = Pattern.compile("(?s)(?<!\\\\)(?:\\\\{2})*\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"");
Matcher matcher = pattern.matcher(s);
int count = 0;
while (matcher.find()){
    count += matcher.group().split("variant", -1).length-1;
}
System.out.println(count);

请看online demo.因此,variant "if and only if 5 divides by i without remainder, then it prints \"i + \" variant: \" + variant\"" variant字符串包含两个variant匹配项.

正则表达式是(?<!\\)(?:\\{2})*"[^"\\]*(?:\\.[^"\\]*)*",请参见.com/r/IohlS8/2" rel="nofollow noreferrer">its demo.

Details:

  • (?<!\\)--不允许\紧靠左侧
  • (?:\\{2})*-零个或多个双反斜杠
  • "-"个字符
  • [^"\\]*-"\以外的零个或更多字符
  • (?:\\.[^"\\]*)*-任何转义字符的零个或多个序列,然后是\"以外的零个或多个字符
  • "-"个字符.

Java相关问答推荐

如何使用Java API在Oracle ODI中运行模拟?

在现代操作系统/硬件上按块访问数据值得吗?

尽管类型擦除,instanceof与泛型在Java中如何工作?

Jooq外键关系

Java函数式编程中的双值单值映射

RESTful框架类字段是安全的还是不安全的

为什么Java Annotation接口覆盖对象类中的方法

Java编译器抛出可能未正确初始化的错误?

如何在EXCEL单元格中添加形状和文本

用OSQL创建索引

如何为JavaFX Spring Boot应用程序制作Windows/MacOS/Linux安装程序

继续收到错误SQLJDBC EXCEPTION执行";org.springframework.dao.InvalidDataAccessResourceUsageException:&

为什么当我创建Robot对象时,JavaFX引发IlLegalStateException异常?

在settings.gradle.kts和Build.gradle.kts中使用公共变量

组合连接以从两个表返回数据

通过/失败的参数化junit测试方法执行数

如何在Spring Boot中为不同的部署环境管理多个.properties文件?

为什么Spring要更改Java版本配置以及如何正确设置?

为什么当我输入变量而不是直接输入字符串时,我的方法不起作用?

Java-Apache BufferedHttpEntity 在发送请求时加载整个文件