Как проверить, почему регулярное выражение не работает? - PullRequest
2 голосов
/ 22 июля 2011

Это регулярное выражение не находит совпадений. На других языках я запускаю его, он отлично работает. В онлайн-тестерах регулярных выражений, таких как 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 ]

6 голосов
/ 22 июля 2011

Удалите символы /, окружающие регулярное выражение.

Pattern.compile принимает необработанное выражение, не заключенное в / с.

4 голосов
/ 22 июля 2011

В Java вы не хотите помещать разделители в конце вашего выражения.Измените его на:

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

(прямая косая черта удалена)

3 голосов
/ 22 июля 2011

Вам необходимо удалить символы /.Механизм регулярных выражений в Java попытается сопоставить их.

1 голос
/ 22 июля 2011

Удалите «/» в начале и в конце вашего паттерна, и он прекрасно работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...