Java正则表达式第一匹配字符

Java正则表达式第一匹配字符,java,regex,pattern-matching,Java,Regex,Pattern Matching,实际上我想得到ref和alias双引号之间所有数据的值。我们也构建了正则表达式。但我面临的问题是alias,它不匹配第一个双引号,而是匹配最后一个双引号。我只需要第一个双引号的数据 String text = "ref=\"ar\" alias=\"as sa\" value=\"asa\""; 在第一次匹配中,将获取两个参数,在第二次匹配中,将获取引号中的数据 当前结果: “ar” “作为sa”value=“asa” 所需结果: “ar” “作为sa”尝试String patternstr=

实际上我想得到ref和alias双引号之间所有数据的值。我们也构建了正则表达式。但我面临的问题是alias,它不匹配第一个双引号,而是匹配最后一个双引号。我只需要第一个双引号的数据

String text = "ref=\"ar\" alias=\"as sa\" value=\"asa\"";
在第一次匹配中,将获取两个参数,在第二次匹配中,将获取引号中的数据

当前结果:

“ar”

“作为sa”value=“asa”

所需结果:

“ar”


“作为sa”

尝试
String patternstr=“(别名=\”[\\w\\s]*\”)(参考=\“[[\\w]]*\”)”

也匹配最后一个,但使用?>修饰符修改要从结果中排除的组

有关更多信息,请参见此:


你只需要让你的对手更懒一点。我相信

String patternstr="(alias=\".*\")|(ref=\"[[\\w]]*\")";    
String patternstr2Level="\".*\"";

我们应该做到这一点。通过使用
*?
而不仅仅是
*
,匹配的这一部分将变为惰性。换句话说,它将尝试匹配找到的第一个双引号,而不是匹配尽可能多的内容,直到找到最后一个双引号。我用Python对它进行了测试,效果很好。

您的问题已经得到了回答,但似乎您的问题可以用Python更好地解决。没问题。如果这个答案对您来说足够好,那么继续并单击问题左侧的复选标记,以便将此问题标记为已回答。
String patternstr="(alias=\".*?\")|(ref=\".*?\")";