Мне нужно регулярное выражение, которое могло бы найти 100 ABCDEF
из входной строки Suite 400 - 100 ABCDEF
. Следует отметить, что я создал регулярное выражение, как показано ниже, но оно выбирает значение из Suite.
[^-\s]\d.+
Возможный дубликат Ссылка - что означает это регулярное выражение?
Также сообщите нам, какой инструмент / язык регулярных выражений вы используете.
Спасибо за быстрые ответы, и прошу прощения за мои ограниченные знания регулярных выражений. По сути, я извлекаю данные OCR из неструктурированного документа, и он возвращает номер набора / единицы в качестве префикса перед любым адресом. В основном у меня есть словарь, в котором хранятся названия улиц по всей Северной Америке, и я пытаюсь найти такие значения, как: 123 ABC Street 123 ABC Avenue Suite 123 - 123 ABC Rd (В этой строке я только собираюсь сопоставить 123 ABC Rd) Что касается названий улиц, у меня есть соответствующий словарь. [^ - \ s] \ d. + DictionaryMatch
Просто поместите $
в конец вашего регулярного выражения. $
означает «конец строки».
Также замените точку на [^-]
, чтобы она соответствовала только дефисам:
[^-\s]?\d[^-]+$
Рабочий пример: http://refiddle.com/refiddles/5b9a88ef75622d4ca9590000
Спасибо за ответ, он работает в большинстве сценариев, но я заметил, что следующий тип не работает: 5 ABC Bay SW.
Кроме того, некоторые адреса, такие как 1 123 Abc Street, также выбирают 1 123 вместо 123.
Я думал, что дефис (на самом деле знак минус) обязателен. Или, чтобы справиться с этим, просто поместите ?
после первого класса символов (который содержит знак минус). Это сделает его необязательным. Я обновил ответ и скрипку.
Спасибо Алекс, ваша помощь очень ценится
Поскольку вы пытаетесь сопоставить почтовый адрес в США, вам следует попробовать сопоставить номер, за которым следует одно или несколько слов:
\d+(?:\s+[A-Za-z.]+)+
Конечно, просто дайте нам логику того, как мы должны соответствовать
100 ABCDEF
.