2011-11-28 51 views
0

使用java.util.regex.Matchermatched1matched2等效的以下表达式?有没有更简单的方法来获得matched的价值?Java正则表达式匹配器:是否等价于?

StringBuilder b = ... 
Pattern p = ... 
Matcher m = p.matcher(b); 
m.find(); 


String matched1 = b.substring(m.start(), m.end()); 

String matched2 = m.group(); 

回答

6

是的,它们是等价的,不,没有简单的方法。

我更喜欢.group()的方法;也许包装在if (m.find())有条件。

+0

例如, 'String matched = m.find()? m.group():“”'? – Armand

+0

@Alison:好主意,如果你喜欢三元运算符。 –

2

他们是平等的。你可以找到像这样的所有匹配。

while (matcher.find()) { 
     System.out.print("Start index: " + matcher.start()); 
     System.out.print(" End index: " + matcher.end() + " "); 
     System.out.println(matcher.group()); 
    }