Я выполняю регулярное выражение названия улицы и хочу сопоставить слова:
(\bNORTH|\bSOUTH|\bEAST|\bWEST)
, если они встречаются после слов
(\bSTREET|\bAVENUE)
... плюс 10 других обозначений улиц(например, LANE, DRIVE и т. д., которые я здесь не буду указывать)
Я не хочу сопоставлять их, если они встречаются до обозначения улицы, потому что я хочу сопоставить полное название улицы следующим образом:
BOB STREET - Matches "BOB STREET"
BOB STREET WEST - Matches "BOB STREET WEST"
WEST BOB STREET - *** Matches "WEST BOB STREET" ***
NORTH BOB STREET WEST - *** Matches "NORTH BOB STREET WEST" ***
В настоящее время у меня есть чрезвычайно длинное регулярное выражение, которое выглядит примерно так:
[0-9].*?((\bSTREET (\bWEST|\bEAST|\bNORTH|\bSOUTH)|\bSTREET)|(\bAVENUE (\bWEST|\bEAST|\bNORTH|\bSOUTH)|\bAVENUE))
, что становится чрезвычайно громоздким, поскольку мне приходится дублировать WEST, EAST, NORTH, SOUTH по одному разу для каждогоиз 15+ обозначений улиц.
Есть ли способ сократить это, чтобы соответствовать обозначению улицы и направлениям компаса - только если они появляются после обозначения улицы - без необходимости дублировать регулярное выражение направления компаса после каждой улицыобозначение?