2012-09-10 56 views
0

我想對陣的格局以下字符串:獲取更多字符匹配組內比預期

String s = "AAA|VY~1055~ ~~BCN~09/24/2012~"; 
Matcher m = Pattern.compile("(.*)\\|VY\\~(.*)\\~").matcher(s); 

if (m.find()) 
{ 
    String value = m.group(2);  
    System.out.print("value = " + value); 
} 

輸出是:

value = 1055~ ~~BCN~09/24/2012 

但我想這一點:

value = 1055 

爲什麼直到字符串結尾都會得到所有字符?

我讀過一些關於消耗到字符串的結尾,我已經試過:

Matcher m = Pattern.compile("(.*)\\|VY\\~(.*)\\~(.*)").matcher(s); 
Matcher m = Pattern.compile("(.*)\\|VY\\~(.*)\\~.*").matcher(s); 

但它不工作。

任何人都可以幫助我嗎?

+0

你是否需要在java正則表達式中轉義'〜's? – Eric

回答

2

使用*?(不情願)量詞,這是懶惰的(儘快停止匹配)。

Matcher m = Pattern.compile("(.*)\\|VY\\~(.*?)\\~").matcher(s); 
+0

作品。非常感謝。 – JBalaguero