Хорошо, это немного больно. Я делаю кое-что с Python, пытаясь получить адрес из нескольких строк плохо помеченного HTML. Вот пример формата:
256-555-5555<br/>
1234 Fake Ave S<br/>
Gotham (Lower Ward)<br/>
Я бы хотел получить только 1234 Fake Ave S, Gotham
. Есть идеи? Я занимаюсь регулярными выражениями всю ночь, и теперь мой мозг забит ...
Edit:
Более подробно о том, какие возможны сценарии того, как будут поступать данные. Иногда первая строка будет там, иногда нет. Все адреса, которые я видел, содержат Ave, Way, St, хотя я бы предпочел не использовать это в качестве фактора при выборе, так как я не уверен, что они всегда будут такими. Вторая и третья строка - alPhone (или возможный адрес электронной почты или веб-сайт):
То, что я имел в виду, было чем-то, что
- Выбирает все от 2-й до последней строки (так, вторая строка, если есть три строки, первая строка, если только две, когда нет номера телефона).
- Выбирает все в последней строке, кроме скобок.
- Объедините 2-ю до последней строки и последнюю строку, добавив между ними ",".
Я использую Scrapy для получения HTML-кода. Адрес находится в одном и том же div, я хочу использовать регулярные выражения для дальнейшего разбиения данных на соответствующие разделы. Теперь, как это сделать, я не могу понять.
Edit2:
Что касается комментария Офира, я должен упомянуть, что я уже сделал выражения, чтобы изолировать раздел номера телефона и скобок.
Телефон (или возможный адрес электронной почты или веб-сайт):
((1[-. ])?[0-9]{3}[-. ])?\(?([0-9]{3}[-. ][A?([0-9]{4})|([\w\.-]+@[\w\.-]+)|(www.+)|([\w\.-]*(?:com|net|org|us))
скобки:
\((.*?)\)
Я не уверен, как использовать их для построения утверждения "все, но не эти".