如何检查正则表达式无效的原因?

时间:2011-07-22 01:29:17

标签: java regex

此正则表达式未找到任何匹配项。在其他语言中我运行它,效果很好。在像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));
    }
}

4 个答案:

答案 0 :(得分:6)

删除正则表达式周围的/个字符。

Pattern.compile采用原始表达式,未包含在/ s。

答案 1 :(得分:4)

在Java中,您不希望在表达式的末尾添加分隔符。将其更改为:

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

(删除了正斜杠)

答案 2 :(得分:3)

您需要删除/个字符。 Java中的正则表达式引擎将尝试匹配这些引擎。

答案 3 :(得分:1)

删除模式开头和结尾的'/',它对我来说很合适。