2015-01-29 2 views
0

Я хочу, чтобы синтаксический анализ строки в несколько строк информации с помощью регулярных выражений. Давайте, например, воспользуемся адресом: «Моя улица 10 90210 Беверли-Хиллз». Пример строк я мог бы создать из этого:Анализ адреса с помощью Regex

  • My Street - название улицы
  • 10 - дом номер
  • 90210 - почтовый индекс
  • Beverly Hills - город

Я был пытаясь создать шаблон для его использования, но я немного потерял, когда дело дошло до анализа String и проанализировало его.

Может кто-нибудь поймать меня на этом?

+3

Это лучше всего работает, если вы покажете нам, что вы пробовали. On Таким образом, мы предпочитаем не просто писать код по запросу. Это не программирование для заказа сайта. –

+0

Мой вопрос был больше предназначен для людей, чтобы связать меня с конкретным классом/Документами, которые я мог прочитать и получить информацию, которую мне нужно продолжить. – Aphex

+0

заключается в том, что почтовый индекс всегда является 5-значным номером? –

ответ

1

я бы использовал string.split функция.

String s = "My Street 10 90210 Beverly Hills"; 
String parts[] = s.split("\\s+(?=\\d+\\s+\\d+)|(?<=\\d+)\\s+(?=[A-Z])|(?<=\\d+)\\s+(?=\\d+)"); 
System.out.println(Arrays.toString(parts)); 

Выход:

[My Street, 10, 90210, Beverly Hills] 

Объяснение:

  • \\s+(?=\\d+\\s+\\d+) Матчи только один или несколько пробелов, если за ним следует одна или несколько цифр плюс один или несколько пробелов плюс один или больше цифр. Таким образом, пространство перед номером дома удовлетворяет этому условию. Таким образом, он получил соответствие.

  • | Called alternation operator.

  • (?<=\\d+)\\s+(?=[A-Z]) Соответствует одному или нескольким местам, которым предшествует одна или несколько цифр, а затем заглавная буква. Таким образом, пробелы перед строкой city удовлетворяют этому условию и подбираются.

  • (?<=\\d+)\\s+(?=\\d+) Это соответствует всем пробелам, находящимся между цифрами. Таким образом, пробелы между номером дома и почтовым индексом совпали.

  • Разделение вашего входа в соответствии с согласованными пространствами даст вам желаемый результат.

+0

Спасибо! Это решило мою проблему - не могли бы вы рассказать несколько слов о том, как вы продолжали создавать это регулярное выражение? И где я мог бы научиться создавать подобное выражение? Опять же, спасибо за ваше время! – Aphex

+0

добавлен некоторые сведения. www.regular-expressions.info лучший сайт для изучения регулярных выражений. –

+1

Ты замечательный. Это все очень помогает. Благодаря! – Aphex

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