2012-07-03 2 views
0

Мне нужна помощь, чтобы соответствовать строке с регулярным выражением. Пример струныКак использовать регулярное выражение в android

"Longitude: 34.847368\nLatitude: 30.435345\nAltitiude: 130.34554" 

Таким образом, в этой строке, число может измениться, и его можно не десятичное значение.

Когда я пытаюсь этот код,

Pattern pattern = Pattern.compile("Longitude: -?\\d+(\\.\\d+)?\nLatitude: -?\\d+(\\.\\d+)?\nAltitude: -?\\d+(\\.\\d+)?"); 

Я получаю сообщение об ошибке сказав \. является неправильная последовательность побег, может ли один помочь?

+0

Выход на конечно, здесь, но вы пытались удалить косые черты перед точками? –

+0

, но если да, точка может представлять что угодно, но она должна представлять реальную точку, поэтому я думал, что ее нужно экранировать ... – omega

+0

@DarshanComputing: Удаление будет работать, но лучше сохранить его там. Проблема в том, что обратная косая черта должна быть экранирована с помощью другой обратной косой черты в Java String. – nhahtdh

ответ

1

Вы должны использовать двойную косую черту, иначе Java видит ее как escape-последовательность String, а не escape-последовательность Regex. Попробуйте это:

Pattern pattern = Pattern.compile("Longitude: \\d+(\\.\\d+)?\nLatitude: \\d+(\\.\\d+)?\nAltitude: \\d+(\\.\\d+)?"); 
+0

почему-то мое регулярное выражение не получает совпадения, см. Первое сообщение, может ли кто-нибудь сказать мне, что случилось? Но создание двойных слэшей заставило его скомпилировать, поэтому спасибо. – omega

+2

В вашей строке ввода ввода вы неправильно указали «Высота» (вы произвели это как «Altit * i * ude»). Может быть, поэтому? – aroth

Смежные вопросы