2011-04-26 239 views
2
String text = "ref=\"ar\" alias=\"as sa\" value=\"asa\""; 

其实我想得到引用和别名的双引号之间的所有数据的值。也构建了正则表达式。但是我面临的概率是别名,它不匹配第一个双引号,而是最后一个。我只想高达第一个双引号Java正则表达式第一个匹配字符

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

在第一个匹配的两个参数将被收购,在将被收购

在引号中的第二匹配数据数据

当前结果:

“AR”

“为sa” 的值= “ASA”

所需的结果:

“AR”

“为SA”

+0

您的问题已得到解答,但似乎可以通过[StreamTokenizer](http://download.oracle.com/javase/7/docs/api/java/io/StreamTokenizer.html)更好地解决您的问题。 – 2011-04-26 08:27:21

回答

5

你只需要让你的比赛有点懒惰。我相信

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

应该做的伎俩。通过使用.*?而不是仅仅.*,比赛的那部分变得懒惰。换句话说,它会尝试匹配找到的第一个双引号,而不是匹配尽可能多的内容,直到到达最后一个双引号。我用Python测试了它,它工作得很好。

+0

@ justin-peel感谢它的完美运作 – arvindwill 2011-04-26 08:36:20

+0

没问题。如果这个答案对你来说足够好,那么请继续点击问题左侧的复选标记,以便将此问题标记为已回答。 – 2011-04-26 15:34:15

0

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

+0

谢谢,要求的结果 – arvindwill 2011-04-26 08:41:45