У меня есть несколько строк, которые я хочу извлечь имя с помощью регулярного выражения. Полное имя находится внутри одного или нескольких каналов, как и любая другая часть строки.
Каждая строка может быть пустой, некоторые образцы:
"Women's College Hospital|76 Grenville Street|ACTT Clinic 6 East|Toronto ON M5S 1B2"
""
"Health and Wellness Center|University of Toronto|214 College Street, Room 111|Toronto ON M5T 2Z9"
"Royal Health Care Centre|130 Adelaide St. West|Lower Concourse|P.O.Box 92|Toronto ON M5H 3P5"
"Suite 1038|790 Bay Street|P.O. Box 51|Toronto ON M5G 1N8
M5G 1N8"
"P.O. Box 19569|Toronto ON M4W3T9"
У меня есть это регулярное выражение
^(.*\|)*((?i).*(room|st.|street|road|avenue|P.O.|St.).*\|(?-i).*)$
Хорошо группируется, если в строке есть только одно совпадение.
Но если имеется более одной итерации или другого совпадения, он группируется с
последняя итерация или последнее совпадение.
Например, для строки
"Sleep & Alertness Clinic|790 Bay street |Suite 800| st. 32|Toronto ON M5G 1N8"
результат:
- Группа 1. Клиника сна и оповещения | 790 Bay street |
- Группа 2. 32 ул. | Люкс 800 | Торонто ON M5G 1N8
То, что я хочу, это:
- Группа 1. Клиника сна и бдительности |
- Группа 2. 790 Bay Street | 32 st. | Suite 800 | Toronto ON M5G 1N8