Вопрос:
Это выражение регулярного выражения для широты и долготы, выраженное как DDMMSS, где D для градусов, M – минуты, S – секунды, а X – буква, указывающая север (N), юг, восток или запад?
Например, для широты 60 градусов, 20 минут, 15 секунд на север, это будет 602015N, а для долготы 40 градусов, 50 минут, 0 секунд на запад, это будет 0405000 Вт. (Обратите внимание, что широта всегда имеет 6 цифр, а долгота всегда имеет 7 цифр).
Кроме того, учитывая, что минуты и секунды должны быть между 00 и 59, а градусы должны быть между 0 и 90 (для широты) и между 0 и 180 (для долготы).
Лучший ответ:
Попробуйте эти два регулярных выражения:
широта
(?:[0-8]d|90)(?:[0-5]d)(?:[0-5]d)[NS]
долгота
(?:0d{2}|1[0-7]d|180)(?:[0-5]d)(?:[0-5]d)[EW]
Nota:
Не забудьте выйти в код java, вы можете использовать флаг игнорирования, если буквы (NSEW) могут быть в нижнем регистре.
String latitude=… final String LATITUDE_REGEX = «(?:[0-8]\d|90)(?:[0-5]\d)(?:[0-5]\d)[NS]»; // the same regex with ignore case flag activated // final String LATITUDE_REGEX = «(?i)(?:[0-8]\d|90)(?:[0-5]\d)(?:[0-5]\d)[NS]»; if (latitude.matches(LATITUDE_REGEX)) { // We have a latitude … } else { // This is not a latitude… } Ответ №1
Редактировать:
Следующий способ контроля Stackoverflow должен помочь вам…
Графики минут секунд (DMS) RegEx
^s*([+-]?d{1,3}*?s+d{1,2}’?s+d{1,2}»?[NSEW]?|d{1,3}(:d{2}){2}.d[NSEW]s*){1,2}$