powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите с регуляркой
38 сообщений из 38, показаны все 2 страниц
Помогите с регуляркой
    #39516574
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1-ком. квартира - 555685,8-950-991-12-12 Этаж: 5/5, Площадь: 45/28/6 кв.м, Санузел: совмещенный, Комнаты: изолированные, http://www.site.com/ad.php?id=208486411

Регулярка: \d{1,}[\d-)•]{4,18}\d+?
Проблема в том, что нужно запретить регулярке находить ID объявления, но получается.
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516637
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подойдёт ?

\b(\d*)\s*\,\s*([0-9-]{10,18})\b
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516748
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не совсем то
нужно искать один конкретный телефон
т.е. выцепить по одному номеру за раз
т.е. регулярка должна видеть в данном случае отдельно "555685" и отдельно "8-950-991-12-12"

мало того, цифры могут разделяться разными знаками: "+38(050)-608-73-73" или "+38 050 608-73-73". Люди не предсказуемы.

Главный вопрос: как сказать регулярке, что если в начале номера какой-то определенный символ, например, знак равно, то пропускать такую группу.
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516759
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Главный вопрос: как сказать регулярке, что если в начале номера какой-то определенный символ, например, знак равно, то пропускать такую группу.
По-моему проще будет хватать цифры вместе с одним символом перед ними, а потом уже дропать то что начинается с '='.
Потому что LookBehind-группы не работают в режиме global, а как без них это сделать - я даже затрудняюсь.
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516760
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
\d{6,},(.*?)\s[А-ЯЮЄЇ]

$1 выведет номер
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516762
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. захватывать так: https://regex101.com/r/RmwQ5b/1]
Код: plaintext
[^=\d]\d{1,}[\d-)•]{4,18}
, а потом просто дропать первый символ.
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516765
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpа потом уже дропать то что начинается с '='.

да, неплохая идея, хоть и код придётся перекомпилировать
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516766
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TREY, в єтом случае:
Комнаты: изолированные, http://www.site.com/ad.php?id=208486411, звонить по телефону 555685,8(950)991-12-12.
ничего не найдёт
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516767
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11TREY, в єтом случае:
Комнаты: изолированные, http://www.site.com/ad.php?id=208486411, звонить по телефону 555685,8(950)991-12-12.
ничего не найдёт
\d{6,},([\+\d].*?\d)\s*[\.А-ЯЮЄЇ]
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516768
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TREY, это продолжение балета, т.е. придётся каждый раз подбирать.
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516770
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11TREY, это продолжение балета, т.е. придётся каждый раз подбирать.
без полных входных данных тогда сложно чтото сказать ..
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516774
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11, да и первого телефона нет
картинка
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516775
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TREY,

а если телефон будет один или три, или четыре?
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516776
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TREY\d{6,},(.*?)\s[А-ЯЮЄЇ]

$1 выведет номер
не выведет: 8(950)991-12-12,8(950)991-12-12.
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516779
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11TREY,

а если телефон будет один или три, или четыре?
нужны все или первый? после окончания номеров - "." или слово , или что?
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516782
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TREYнужны все или первый?
Конечно же все.


TREYпосле окончания номеров - "." или слово , или что?
я ж написал, что люди не предсказуемы :)
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516785
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11TREYнужны все или первый?
Конечно же все.


TREYпосле окончания номеров - "." или слово , или что?
я ж написал, что люди не предсказуемы :)
в начальном примере у тебя Этаж после номера .. потом уже идут точки .. потом номеров несколько .. озвуч все входные данные
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516787
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а это .*? вообще опасная комбинация
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516788
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TREY, так единого стандарта не существует. Если знать, что за чем идёт, то нафига вообще эти регулярки ;)
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516790
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вместо знака равно может быть ещё тире (минус)
ulitsa-13722783.html
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516791
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(\d{6,}(\.\w+)*),((([\s\+]*(\d{1,}[\s\(\)\-]*\d+){4,}))[\,\.\s]*)+
https://regex101.com/r/RmwQ5b/5
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516792
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11TREY, так единого стандарта не существует. Если знать, что за чем идёт, то нафига вообще эти регулярки ;)
с твоими требоваиями тебе ИИ нужен на миллиард синапсов , а не регулярки
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516796
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11а это .*? вообще опасная комбинация
а это

я ж написал что люди не предсказуемы :)
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516799
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня получилось вот такое выражение
Код: plaintext
[^=-\d]\d{1,}[\d-() •]{4,18}

пока работает
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516857
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11, нет, не работает, простой номер типа "0506312598" не находит, если больше нет ничего, а только цифры.
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516860
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

Не вникал, но вот чтобы тебе перед регуляркой не избавиться от лишниз литералов?
Т.е. оставить только цифры и запятую (как разделитель номеров)
С ними и работать - т.е. отвязаться от "я ж написал что люди не предсказуемы :)"
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516933
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorТ.е. оставить только цифры и запятую (как разделитель номеров)
там кроме номеров телефонов: id объявления, цена - и это тоже набор цифр.
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516939
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну пока такой вариант:
Код: plaintext
[\d=-]{1,}[\d-() •]{4,18}
и если в найденной строке попадается "=" или "-", то откидываем
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516972
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

([^\=,\.][\+]*(\d{1,2})*([\(\s\-])*(\d{3})([\)\s\-])*(\d{2,3})([\s\-])*(\d{2,3})([\s\-])*(\d{2,3}))|([\,\.\s]\d{6,})
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516975
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516996
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TREY, нет, не правильно, потому что телефон один, а совпадений 10, какое из совпадений мне использовать?




Должно быть:
один телефон = одно совпадение
пять телефонов - пять совпадений
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39516998
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мало того, образец, слишком сложный для того, чтобы его понять, а если что-то поменять придётся
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39517005
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11TREY, нет, не правильно, потому что телефон один, а совпадений 10, какое из совпадений мне использовать?




Должно быть:
один телефон = одно совпадение
пять телефонов - пять совпадений
легко , йобта
(?:[^\=,\.][\+]*(?:\d{1,2})*(?:[\(?:\s\-])*(?:\d{3})(?:[\)\s\-])*(?:\d{2,3})(?:[\s\-])*(?:\d{2,3})(?:[\s\-])*(?:\d{2,3}))|(?:[\,\.\s]\d{6,})
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39517006
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39517014
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, я знаю, что можно добавить ?:
но это ещё больше усложняет образец
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39517425
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11там кроме номеров телефонов: id объявления, цена - и это тоже набор цифр.Как вариант смотреть на количество цифр
380671234567 - 12
0671234567 - 10
И для городских 6 или 7. Вариант с городским в 5 цифр не рассматриваем, т.к. в 99% случаев перед ним идет еще 5 цифр кода и он сводится к первому или 2 варианту
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39517500
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=_= Да просто берём аналог str_replace и заменяем ( и ) с - на пустоту, и потом парсим нужный текст.

Главное что бы потом получилась 555685,89509911212 ... Тогда проблему со сверкой не будет.

И регулярку можно будет написать так

\b(\d*)\s*\,\s*(89509911212)\b

а если надо два телефона

\b(\d*)\s*\,\s*(89509911212|89501235947)\b

На PHP бы я написал так
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
$Phones = array();
$Phones[] = '89509911212';
$Phones[] = '89501235947';

$Regxp = '@\b(\d*)\s*\,\s*('. implode('|', $Phones) .')\b@';

$html = ' 5-ком. квартира - 555685,8-950-991-12-12 Этаж: 5/5,
3-ком. квартира - 75677,8-95-01235-9-47 Этаж: 5/5,
';

$html = str_replace(array('(', ')', '-'), '',  $html);

if(preg_match_all($Regxp, $html, $v)) {
 foreach((array)$v[2] as $i => $Phone)
    echo 'Номер: ' . $Phone . ' Чёт - там: ' . $v[1][$i] . PHP_EOL;
}



Результатом будет
Номер: 89509911212 Чёт - там: 555685
Номер: 89501235947 Чёт - там: 75677

http://sandbox.onlinephpfunctions.com/code/8fc4bf849fdd1452af5aa562f22ada97fdbfd593
...
Рейтинг: 0 / 0
Помогите с регуляркой
    #39517582
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Няшик,
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите с регуляркой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]