2013-10-07 78 views
2

我正在嘗試使用REGEX從較大的字符串中提取5位數字。使用Java從字符串中提取任意5位數字

這裏是我用來做到這一點的方法,但它只是返回null。

public void setCWBudgetCode(String webPage){ 

    Pattern pattern = Pattern.compile("/\\b\\d{5}\b/g"); 
    Matcher matcher = pattern.matcher(webPage); 
    if (matcher.find()) 
     this.cwBudgetCode = matcher.group(); 
} 
+0

沒有第1組中的正則表達式。只需使用'group()' –

回答

1

這就是問題所在:

Pattern pattern = Pattern.compile("/\\b\\d{5}\\b/g"); 

取而代之的是使用這種pattern

Pattern pattern = Pattern.compile("(\\b\\d{5}\\b)"); 

不同的Javascript有沒有在java正則表達式的分隔符,當然沒有/g

另請注意,我在圍繞r使用parenthesis egex這樣就可以使用matcher.group(1)

+2

它不起作用,因爲OP在沒有組1的情況下使用'matcher.group(1)'得到組。「他應該使用'group()' – BackSlash

+0

奇怪,它仍然沒有通過if條件,我正在測試它使用像「一堆文本12345」字符串 –

+0

@BackSlash:是的,我意識到這也是錯誤,但第一個錯誤當然是OP的錯誤正則表達式。 – anubhava

2

你需要改變你的正則表達式的號碼保存爲一組Pattern.compile("\\b(\\d{5})\\b");

這將使你的group(1)代碼工作如下