Java Regular Expression首先匹配char

时间:2011-04-26 08:08:48

标签: java regex pattern-matching

String text = "ref=\"ar\" alias=\"as sa\" value=\"asa\"";

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

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

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

当前结果:

“AR”

“as sa”value =“asa”

必填结果:

“AR”

“as sa”

3 个答案:

答案 0 :(得分:5)

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

String patternstr="(alias=\".*?\")|(ref=\".*?\")";

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

答案 1 :(得分:0)

尝试String patternstr="(alias=\"[\\w\\s]*\")|(ref=\"[[\\w]]*\")";

答案 2 :(得分:0)

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

有关详细信息,请参阅此处:

http://www.regular-expressions.info/atomic.html