![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Есть текст, в котором встречаются наборы цифр в разных форматах, вот наиболее часто используемые:
243-12-3 1999-05-14 1234567 1-234567 12 34 567 1 500 000 1-(123)-456-78-90 755 58 69 ------- 15000 1 500 000 у.е. 1 500 000 уе Есть выражение: (\d[\d? -\-]{7,}) довести до ума не получается. Какие условия? По идее выражение должно видеть только номера телефонов, как видно из списка, то две последние строки (с у.е. и уе) не есть номерами телефонов, вот из списка должно попасть в результаты всё, кроме последних строчек после ------- Буду признателен за помощь Это сообщение отредактировал(а) Akella - 19.5.2008, 09:19 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
вот ещё подсказали:
(\d[\d\(\)\- ]*\d)
но проблема в том, что наборы типа 777 или 123 или 1254 тоже попадают, т.е. нужно ещё контролировать количество цифр, т.е. найти все наборы, где цифр, например от 7 до 11 |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
вот ,например текст объявления:
пока что самым нормальным шаблоном является этот: (\d[\d- ]{5,}) |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
хех, этот пример разительно отличается от того, что ты привел в первом посте. для составления регэкспа нужно как можно больше "случаев" текста.
твой регэксп совсем не имеет условия окончания. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
dumb,
http://regexpr.ru |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
без признаков начала-конца строки и whitespace'ов:
ты лучше чуть больше примеров текста выложи. |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 16 Всего: 160 |
Akella, дайте лучше точное описание, что считается в этой задачке телефонным номером. Тогда запросто напишете выражение. Решать задачу фактически без формулировки...
Да и ещё, должен (по-моему) быть какой-то чёткий стандарт на телефонные номера: разделитель - либо пробел, либо тире; скобки - либо разрешены, либо нет. Тогда будет проше разобрать документ. Или документ уже имеется и там такая котовасия? Это сообщение отредактировал(а) kemiisto - 19.5.2008, 12:30 -------------------- |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Вот то, что прога сканирует, цветом выделены номера телефонов, которые должны попасть в совпадения
Добавлено @ 12:49 так вот нужно составить несколько выражений с описанием, чтобы пользователь перед старом мог выбрать, т.к. в разных городах, да что там в городах, в разных организациях по разному пишут телефоны, где с тире, где только цифры, где тире со скобками, где пробел Добавлено @ 12:54 Автор к сожалению не даёт возможности использовать пре и пост условия http://regexpstudio.com/RU/ Это сообщение отредактировал(а) Akella - 19.5.2008, 13:04 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
как видно, запятая является разделителем телефонов, если их несколько, может быть и точка с запятой
Добавлено через 45 секунд Само собой, что идеального шаблона выражения не составишь, хотелось бы поиметь несколько более или менее нормальных Добавлено через 1 минуту и 49 секунд Как видно из примера, в качестве разделителя цифр в телефоне может быть пробел, скобки, тире, а может быть вообще без разделителей Добавлено через 2 минуты и 36 секунд Плохо, что в дельфи нет встроенных регулярок, как это в MSVS сделано, при чём там сделано, как мне сказали "по-уму". |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
эм... может как-нибудь так?
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
нет, это слишком сложное:
Внимание регулярное выражение содержит ошибки: preg_match_all(): Unknown modifier '(' |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
ты это.. когда проверяешь на regexpr.ru, обрамляй регулярку в слэши-то: /(блабла)(блаблабла)/
Добавлено через 3 минуты и 14 секунд и кстати: применимо к регуляркам выражение "слишком сложное" практически не употребимо... |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 16 Всего: 160 |
Akella, можеть быть Вас устроит поиск всей строки телефонов, а не каждого в отдельности? Если да, то можно так:
Проект приаттачил. Вроде как работает. За исключением очевидных ошибок/опечаток (см. например, вторую строку т. , 80978247435). Такие опечатки не имеет смысла обрабатывать, т.к их может быть бесконечно много. Присоединённый файл ( Кол-во скачиваний: 8 )
regexp.zip 66,50 Kb-------------------- |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
можно меня на ТЫ, я не такой уже и старый Добавлено через 50 секунд нет, именно по отдельности, т.к. я потом по базе телефоны пробиваю Добавлено через 3 минуты и 18 секунд
здесь нужно выцепить 80978247435, какая же здесь очепятка? |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |