Java Regular Expression首先匹配char

arv*_*ill 2 java regex pattern-matching

String text = "ref=\"ar\" alias=\"as sa\" value=\"asa\"";
Run Code Online (Sandbox Code Playgroud)

实际上我想得到ref和别名的双引号之间的所有数据的值.也构思了正则表达式.但我面临的问题是别名,它不匹配第一个双引号,而是最后一个.我只希望数据达到第一个双引号

String patternstr="(alias=\".*\")|(ref=\"[[\\w]]*\")";    
String patternstr2Level="\".*\"";
Run Code Online (Sandbox Code Playgroud)

在第一次匹配中,将获取两个参数,并且将获取引号中的第二匹配数据

目前的结果:

"AR"

"as sa"value ="asa"

要求结果:

"AR"

"如sa"

Jus*_*eel 5

你只需要让你的比赛更加懒散.我相信

String patternstr="(alias=\".*?\")|(ref=\".*?\")";
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.通过使用.*?而不仅仅是.*,匹配的那部分变得懒惰.换句话说,它将尝试匹配它找到的第一个双引号,而不是匹配尽可能多的东西,直到它到达最后的双引号.我用Python测试它,效果很好.