Регулярное выражение для записи названия улицы и, при необходимости, буквы дома

#regex

#регулярное выражение

Вопрос:

У меня есть следующий адрес: Castle street 103 B 30 . Используя регулярное выражение, я хочу извлечь 2 вещи: Castle street и B .

Пока у меня есть это: ([A-z ] ) . Который делает то, что я хочу, за исключением того, что он также включает в себя конечное пространство Castle street и окружающие пространства B , которые мне не нужны.

Как мне это решить?

Комментарии:

1. Используйте [A-Za-z] (?:s [A-Za-z] )*

Ответ №1:

Вы можете использовать

 [A-Za-z] (?:s [A-Za-z] )*
b[A-Za-z] (?:s [A-Za-z] )*b
bp{L} (?:s p{L} )*b
b[[:alpha:]] (?:[[:space:]] [[:alpha:]] )*b
 

Смотрите демонстрацию регулярных выражений. Подробные сведения:

  • b — граница слова (убедитесь, что первое слово не склеено с другим символом слова, например, буквой, цифрой или _ )
  • [A-Za-z] / [[:alpha:]] / p{L} — одна или несколько букв
  • (?:s [A-Za-z] )* — ноль или более повторений
    • s / [[:space:]] — один или несколько пробелов
    • [A-Za-z] — одна или несколько букв
  • b — граница слова (убедитесь, что последнее слово не приклеено к другому символу слова, например, букве, цифре или _ )