Разделить строку в Java с помощью регулярных выражений - PullRequest
0 голосов
/ 28 января 2019

Я получаю ввод от пользователя в виде строки, пример ввода такой:

Hospital name 123-4567   (Hospital name = name, 123-4567=ZIP CODE)
Hospital 123-4567        (Hospital = name, 123-4567=ZIP CODE)
Hospital 33name 123-4567 (Hospital 33name = name, 123-4567=ZIP CODE)
123-4567                 (123-4567=ZIP CODE)
1234567                  (1234567=ZIP CODE)

Теперь я нашел регулярное выражение для распознавания почтового кода: [0-9]{3}[-,ー]?[0-9]{4} (сначала 3 числа,затем 4 числа после -, ー) Но я хочу разбить строку на 2 части: имя и почтовый индекс.Если я разделю этим регулярным выражением строку: ИМЯ БОЛЬНИЦЫ 123-4567

Я получу переменную только: ИМЯ БОЛЬНИЦЫ, и КОД ZIP не «разделен» в другой переменной / списке.

Я должен разделить две части на две разные переменные / список / массив, все в порядке.

Чем не все, в поле ввода пользователя обрабатывается каждый введенный символ, поэтому я должен распознатьстрока на каждом входе.

Если пользователь начинает вводить: ИМЯ БОЛЬНИЦЫ 3 (Я могу предположить, что это 3 - начало почтового индекса или название больницы, но если ввод продолжается с:ИМЯ БОЛЬНИЦЫ 345-, я уверен, что 345- это почтовый индекс)

Кто-нибудь знает, как РАЗДЕЛИТЬ это жало в 2 части?

1 Ответ

0 голосов
/ 28 января 2019

Предполагая, что inputLine - это одна строка для анализа (например, Hospital name 123-4567)

Pattern pattern = Pattern.compile("(?:(.*)\\s+)?(\\d{3}[-ー]?\\d{4})"):
Matcher matcher = pattern.matcher(inputLine);
matcher.matches();
//use matcher.group(1) for the hospital name (e.g. "Hospital name")
//use matcher.group(2) for the zip code (e.g. "123-4567")

Это регулярное выражение будет работать для ваших целей.

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