2011-10-30 32 views
1

例如:如何在正則表達式中獲得通配符的匹配部分?

Pattern pattern = Pattern.compile("a(.*)b"); 
Matcher matcher = pattern.matcher("a19203b"); 
matcher.find(); 
System.out.println(matcher.group()); 

此打印出整個字符串(a19203b)。我需要的是19203。我怎樣才能在Java中得到這個?

(例如,在的mod_rewrite規則,我會做類似RewriteRule article/(.*) article.php?id=$1其中$1是我需要的字符串)找到了解決辦法

回答

4

。而不是matcher.group(),請使用matcher.group(1)

Pattern pattern = Pattern.compile("a(.*)b"); 
Matcher matcher = pattern.matcher("a19203b"); 
matcher.find(); 
System.out.println(matcher.group(1));
+0

確實如此,但不要爲'find()'這樣的副作用調用。你應該總是在'if'或'while'語句中調用它,以便知道匹配是否成功。 –

1

使用lookbehinds /向前看符號:

Pattern regex = Pattern.compile("(?<=a).*(?=b)"); 

不要捕捉你不希望捕捉到的東西。在這裏你的整場比賽將是你想要的。

相關問題