2011-07-22 60 views
2

此正則表達式未找到任何匹配項。在其他語言中,我運行它,它效果很好。在rubular.com這樣的在線正則表達式測試器中,它的效果非常好。如何檢查正則表達式不工作的原因?

在java中,它不起作用。

java正則表達式有什麼不同,它們會破壞這樣的事情?

它爲什麼不起作用?此外,我怎樣才能找出未來爲什麼他們不匹配?

樣本數據

<link>http://www.wunderground.com/US/MI/Milan.html</link> 
<description><![CDATA[Temperature: 89.4&deg;F | Humidity: 62% | Pressure: 29.65in  (Steady) | Conditions: Clear | Wind Direction: NW | Wind Speed: 1.6mph<img  src="http://server.as5000.com/AS5000/adserver/image?ID=WUND-00070&C=0" width="0" height="0"  border="0"/>]]> 
</description> 

和代碼

protected void parseTemperature() 
{ 

    Pattern p = Pattern.compile("/Temperature: ([0-9.]+)&deg/"); 
    Matcher m = p.matcher(this.xml); 

    if (m.find()) 
    { 
     this.temperature = Double.valueOf(m.group(1)); 
    } 
} 
+0

也許你需要逃避點? '[0-9 \。]' –

+0

@Pablo:不,當點出現在字符類中時,它只是匹配一個點。在我知道的每種正則表達式中都是如此。 –

+0

@Alan ok謝謝澄清! –

回答

6

卸下/字符周圍的正則表達式。

Pattern.compile取原始表達式,未包含在/ s中。

4

在Java中,您不希望將分隔符放在表達式的末尾。將其更改爲:

Pattern p = Pattern.compile("Temperature: ([0-9.]+)&deg"); 

(斜槓刪除)

3

您需要刪除/字符。 Java中的正則表達式引擎將嘗試匹配這些引擎。

1

刪除模式開始和結尾的'/',它對我來說工作得很好。