2011-11-28 53 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()); 
    }