2010-10-13 3 views
0

У меня есть список 350 адресов в одном файле excel, который мне нужно импортировать в таблицу SQL, разбивая данные на столбцы.Преобразование адресной строки из строки в столбцы - Regex?

содержание ячеек Excel такой, как этот

любезность Motors 2520 Кохассет Rd - Чико, CA 95973-1307 530-893-1300

Какую стратегию следует применить, чтобы импортировать это в чистом мода?

Я думал

ИМЯ < - ничего до 1-го разряда

STREET АДРЕС < - от 1-го разряда на '-'

ГОСУДАРСТВЕННАЯ < - Все, что от последнего '' к «-» непосредственно перед этим (поле адреса может содержать некоторые)

ТЕЛЕФОН < - Последние 12 символов

< ZIP - 10 первый символ последнего 22 голец

Я работаю в C#, если это имеет значение.

Является ли RegEx подходящим подходом? Я не слишком хорошо знаком с ними, поэтому я не уверен. Может ли кто-нибудь предложить выражение RegEx, которое выполнило бы работу (или ее часть)?

Спасибо!

ответ

1

следующее регулярное выражение должно вытащить каждую часть улавливающей группы:

(\D+) ([^-]+) - ([^,]+, \w+) ([\d-]+) ([\d-]+) 

Захват групп, в следующем порядке:

  1. Имя
  2. Улица
  3. город, штат
  4. Почтовый индекс
  5. Телефон
+0

Ор не указать город, только государство. –

+0

Справа, Джейсон; но было бы довольно просто адаптировать захват, чтобы вместо этого захватить государство. Я решил, что я бы предложил более общее регулярное выражение, которое можно было бы адаптировать. – Amber

1

Регулярное выражение является инструментом для этой работы. Я не разработчик C#, поэтому я не могу дать вам точный код. Тем не менее, следующее регулярное выражение должно работать. Большинство IDE имеют встроенный или если у вас есть доступ к UNIX sed.

([^\d]+)\s(.+?)\s-\s[^,]+,\s([A-Z]{2})\s([^\s]+)\s([^\s]+) 

Захватывает:

  1. Имя
  2. Адрес
  3. государственный
  4. ZIP
  5. Телефон
+1

Гораздо проще написать '[^ \ d]' как просто '\ D'. – Amber

+0

@Amber, некоторые реализации регулярных выражений не поддерживают группы отрицания. –

+1

Большинство все же. – Amber

0

Вы можете использовать Google геокодирования API.Возможно, вам придется удалить номер телефона, но если кто-то ищет парсинг адресов с большей функциональностью, чем просто регулярное выражение, они могут даже получить long/long для адреса.

Для вашего адреса, например

http://maps.googleapis.com/maps/api/geocode/xml?address=2520%20Cohasset%20Rd%20-%20Chico%2C%20CA%2095973-1307%20530-893-1300%20%20&sensor=false

Documentation

https://developers.google.com/maps/documentation/geocoding/

Смежные вопросы