Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

Открыть новую тему     Написать ответ в эту тему

leftMIND

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
   Регулярные выражения
Обучающий материал
  • Книги    
  • Шпаргалки: от AZJIO (AutoIt3, PCRE) от Dave Child
  • wikipedia.org - Регулярные выражения на wiki  
  • edlinsoft.blogspot.com - Регулярные выражения в .NET Framework  
  • php.ru - Синтаксис регулярных выражений  
  • php.net - Синтаксис регулярных выражений  
  • regexpstudio.com - Регулярные выражения для Delphi  
    Официальные источники:
  • docs.notepad-plus-plus.org - Официальный источник Notepad++ (англ. яз.)  
  • pcre.org - Официальный справочник движка PCRE (англ. яз.)  

  •    Тестирование регулярных выражений
    Программы
    Онлайн сервисы
  • RegexBuddy - крутая и платная  
  • RegExp - бесплатно, AZJIO, PCRE, AutoIt3  
  • Expresso  
  • The Regex Coach  
  • RegExstar, Github (AutoHotKey, PCRE)
  • Обзор программ от ManHunter    
  • regexr.com здесь в Community множество готовых регулярных выражений  
  • pagecolumn.com - для javascript  
  • pagecolumn.com - для php  
  • cuneytyilmaz.com - для javascript  
  • php-include.ru - на флеш-плеере  
  • regex101.com  
  • easyregexp.ru  
  • debuggex.com - показывает структурно  

  •    Схожие темы
  • javascript регулярные выражения
  • PHP: Регулярные выражения (RegExp, Regular, eregi, preg)
  • Игра - Регулярно выражайтесь!
     
    первое сообщение темы...
    Обсуждение шапки данной темы ведётся в этой теме
    Рекомендации по составлению вопросов в данной теме:

  • Всего записей: 33 | Зарегистр. 07-04-2002 | Отправлено: 23:55 15-10-2002 | Исправлено: AZJIO, 15:18 12-02-2021
    VadKomarov



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    YuS_2
     
    Суть такая есть текст:
    Текст для обработки
     
    надо выбрать текст начинающийся на дату и последующие вложения:
    Пример:

    Код:
     
    08.04.2014 - ННННННННН кем( орган): ЙЙЙЙЙЙЙЙЙЙ  
    ЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙЙ  
    ЙЙЙЙЙЙЙЙЙЙ ЙЙЙЙЙЙЙЙЙЙЙЙЙ
    статьи: ЦЦЦЦЦЦЦЦЦЦЦЦЦЦЦЦ
    УУУУУУУУУУУУУУУУУ Срок: КККККККККККККККККККК
    Комментарии : ЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕ
    Дополнительные отметки: ФФФФФФФФФФФФФФФФФФФФФФФ
    ФФФФФФФФФФФФФФФ
    ФФФФФФФФФФФФФФФФФФ Кем : ЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ
    ЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ
    Срок: ССССССССССССССССССССССССССССССССССССС
    СССССССССССССССССССССССССССС
    22.12.2014 - ННННННННННННННН : НННННННННННННННН  
    НННННННННН. Убыл в: ЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗ  
    ЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗ ЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗ  
    ЗЗЗЗЗЗЗЗЗЗЗЗЗЗ
     

     
    должно выбраться по группам ДАТА, НННННН, ЙЙЙЙЙЙ, ЦЦЦЦЦ и т.д. как на этом сайте, дальше выбранные данные буду распределяться в программе по нужным полям, соответственно если части текста будут отсутствовать то их не будет использовать в выборках.
     
    Строка разделяющая выборки (1), (2), (3)...... обычно просто пустая без пробела, либо содержащая текст {- - - -}
     
    На этом же сайте regex101.com пробую протестировать в моем регулярном выражении
    Цитата:
    ^$
    но почему то не выбирает пустую строку.
     
    В конечном результате должно быть в одном из совпадений (как на сайте)
     
    Результат
     
    Ну как то так...

    Всего записей: 100 | Зарегистр. 01-05-2005 | Отправлено: 09:50 26-11-2018 | Исправлено: VadKomarov, 10:06 26-11-2018
    YuS_2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VadKomarov

    Цитата:
    но почему то не выбирает пустую строку.

    там надо опцию соответствующую включить...
     

    Цитата:
    Ну как то так...

    Боюсь, что с такой задачей одними регэкспами, наверное, не обойтись, придется привлекать ЯП.
    Можно, конечно, шаблоном выделить блоки, как-то так, а затем уже их разбирать по запчастям. Но слишком уж много неопределенности наличия необходимых групп в каждом блоке...
    В общем, инструмент надо подбирать... а его выбор будет зависеть от того, в чем именно требуется решить эту задачу.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 11:53 26-11-2018
    Maksimus772



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите с шаблоном для тотал коммандера (групповое переименование файлов).  
    я в синтаксисе не силен, но там используется энтот Regexp. хочется сделать универсальный шаблон, для переименования скачанных сериалов
    напр. мне не нужны в имени файла название, год, автор рипа, и прочая, оставить нужно только номер серии. имена файлов могут иметь самые разные варианты написания:

    Цитата:
    прим 1
    Luchshe.chem.lyudi.s01e01.2018.WEB-DL.(1080p).Getty.mkv
    Luchshe.chem.lyudi.s01e02.2018.WEB-DL.(1080p).Getty.mkv
     
    прим 2
    01_Домашний_арест_e01.mkv
    02_Домашний_арест_e02.mkv
     
    прим 3
    Домашний_арест.01 из 16.mkv
    Домашний_арест.02 из 16.mkv
     
    прим 4
    DomashnijArest-2018 by Ivan007 01из16.mp4
    DomashnijArest-2018 by Ivan007 02из16.mp4
     

    а на выходе должно получаться:

    Цитата:
     
    01.mkv
    02.mkv
     

    Всего записей: 262 | Зарегистр. 24-10-2011 | Отправлено: 09:27 01-12-2018 | Исправлено: Maksimus772, 09:38 01-12-2018
    U235

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maksimus772
    Мне кажется, что достаточно сделать сортировку по алфавиту и применить групповое переименование. Все.
    Во всяком случае, для ваших примеров это так.

    Всего записей: 885 | Зарегистр. 14-12-2005 | Отправлено: 12:27 01-12-2018 | Исправлено: U235, 12:28 01-12-2018
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    плюсую. Ctrl M

    Всего записей: 1327 | Зарегистр. 27-11-2008 | Отправлено: 13:03 01-12-2018
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Точней даже это единственный вариант если имена имеют самый разный формат. Так как для регулярки нужно, чтобы на входе все имена были строго заданного формата.

    ----------
    Раздачи и акции

    Всего записей: 7189 | Зарегистр. 20-03-2009 | Отправлено: 13:04 01-12-2018
    Maksimus772



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Мне кажется, что достаточно сделать сортировку по алфавиту и применить групповое переименование. Все.  

    это гемор, во всяком случае если постоянно - каждый день - переименовывать.
     

    Цитата:
    Так как для регулярки нужно, чтобы на входе все имена были строго заданного формата.

    занчит универсального шаблона нет, ясно.

    Всего записей: 262 | Зарегистр. 24-10-2011 | Отправлено: 14:05 01-12-2018
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    это к подходу, это не к универсальному шаблону. Он появится, если вы сможете собрать или правильнее сказать, формализировать задачу

    Всего записей: 1327 | Зарегистр. 27-11-2008 | Отправлено: 19:33 01-12-2018
    DimitriusXZ

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть строка URL вида:
    http://www.site.com/topics/file-123vb/2008/page-1980865e.htm
    Нужно составить запрос чтобы он "выделял" последнюю часть строки "page-1980865e.htm".
    Все испробовал - правильно ничего не получилось.
    Работал в Perl.
    Пожалуйста, подскажите, как правильно составить запрос?

    Всего записей: 834 | Зарегистр. 17-01-2010 | Отправлено: 06:03 14-12-2018
    YuS_2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DimitriusXZ

    Цитата:
    чтобы он "выделял" последнюю часть строки "page-1980865e.htm".

    Примерно так:

    Код:
    https?:\S+\/\K\S*

    Но в ссылках не должно быть прямых пробельных символов, т.е. ссылки, как минимум, должны быть percent-encoded...

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 07:47 14-12-2018
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет, кто-нибудь подскажет?
    есть такое выражение:
    ^(?<=[^0-9.]|^)[1-9][0-9]{0,2}(\.([0-9]{0,3})){3}(?=[^0-9.]|$)
    выделяет ip, что нужно добавить чтобы выделяло еще и cidr?
    сейчас
    111.111.111.111 и т.п.
    нужно еще и  
    111.111.111.111/24 и т.п.

    Всего записей: 7352 | Зарегистр. 08-09-2001 | Отправлено: 10:15 15-12-2018
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    типа /24?
     
     
    \/\d+

    Всего записей: 1327 | Зарегистр. 27-11-2008 | Отправлено: 15:13 15-12-2018
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    типа /24?  

    типа, но не

    Цитата:
    \/\d+

    Всего записей: 7352 | Зарегистр. 08-09-2001 | Отправлено: 18:32 15-12-2018
    Cossack

    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    выделяет ip, что нужно добавить чтобы выделяло еще и cidr

    Посмотри тут
    https://www.regextester.com/93987
    https://www.regextester.com/99476

    Всего записей: 15540 | Зарегистр. 26-02-2002 | Отправлено: 21:38 15-12-2018
    YuS_2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los

    Цитата:
    выделяет ip, что нужно добавить чтобы выделяло еще и cidr?

    Если говорить именно о валидных IP и CIDR, то примерно так:

    Код:
    \b((2[0-5][0-5]|1?\d\d?)\.){3}(2[0-5][0-5]|1?\d\d?)\b(\/(\d|[1-2]\d|3[0-2])\b)?(?!\/)

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 09:27 16-12-2018
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_2,
    спасибо, почти то, что нужно, но для просто ipv4
    999.999.999.999
    101.200.81.187
    103.19.89.118
    103.230.84.239
    103.4.52.150
    103.7.59.135
    104.247.219.41
    109.127.8.242
    109.229.210.250
    111.111.111.111
    192.168.0.1 test
    1.1.1.1.1
    пропускает некоторые ip и подхватывает первые 4 для 1.1.1.1.1
       
     

    Всего записей: 7352 | Зарегистр. 08-09-2001 | Отправлено: 12:45 16-12-2018
    YuS_2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los

    Цитата:
    пропускает некоторые ip

    а, да, косяк в шаблоне... надо так:

    Код:
    \b((25[0-5]|2[0-4]\d|1?\d\d?)\.){3}(25[0-5]|2[0-4]\d|1?\d\d?)\b(\/(\d|[1-2]\d|3[0-2])\b)?(?!\/)


    Цитата:
    подхватывает первые 4 для 1.1.1.1.1

    а вот тут... с точки зрения валидности, это вполне себе IP...
    В данном случае требуется четкое определение: чем должен заканчиваться валидный IP(/CIDR), либо наоборот, чем НЕ должен заканчиваться и в соответствии с этим уже скорректировать lookbehind часть шаблона, т.е. вот это:

    Код:
    (?!\/)

    и если это не javascript, а PCRE, то и lookahead тоже придется задействовать, т.е. обязательно учитывать то, с чего должен начинаться или НЕ должен начинаться валидный IP...
    Для частного случая, примерно так:

    Код:
    (?<!\.)\b((25[0-5]|2[0-4]\d|1?\d\d?)\.){3}(25[0-5]|2[0-4]\d|1?\d\d?)\b(\/(\d|[1-2]\d|3[0-2])\b)?(?!\/|\.)

     
    Добавлено:
    А для ускорения процесса работы регэкспа, в случае с PCRE, я бы вообще сделал так:

    Код:
    (?<!\.)\b(?:(?>25[0-5]|2[0-4]\d|1?\d\d?)\.){3}(?>25[0-5]|2[0-4]\d|1?\d\d?)\b(\/(?>3[0-2]|[1-2]\d|\d)\b)?(?!\/|\.)

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 15:05 16-12-2018 | Исправлено: YuS_2, 15:17 16-12-2018
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_2,
    да, для PCRE - оптимальный вариант.

    Цитата:
    (?<!\.)\b(??>25[0-5]|2[0-4]\d|1?\d\d?)\.){3}(?>25[0-5]|2[0-4]\d|1?\d\d?)\b(\/(?>3[0-2]|[1-2]\d|\d)\b)?(?!\/|\.)

    Спасибо. Оно.
    А у вас нет такого же, но с перла… с перламутровыми пуговицами?
    если не трудно - отдельно для IP и для CIDR? Для IP, думаю, у самого получится на вашем примере, а для CIDR точно запутаюсь.
    P.S.
    Случайно для sed у вас подобного шаблона нет?

    Всего записей: 7352 | Зарегистр. 08-09-2001 | Отправлено: 17:24 16-12-2018
    YuS_2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los

    Цитата:
    А у вас нет такого же, но с перла…

    а... хмм... PCRE - это что?
     

    Цитата:
    если не трудно - отдельно для IP и для CIDR?

    не совсем понятно, что требуется? Уточните...
     

    Цитата:
    Случайно для sed у вас подобного шаблона нет?

    sed, если не ошибаюсь, не умеет lookaround-ы, но можно примерно так:

    Код:
    sed -rn "/(^|\s)\b((25[0-5]|2[0-4][0-9]|1?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|1?[0-9][0-9]?)\b(\/(3[0-2]|[1-2][0-9]|[0-9])\b)?(\s|$)/p"

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 19:55 16-12-2018
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_2,

    Цитата:
    не совсем понятно, что требуется? Уточните...  

    с данным шаблоном выделяются как IP так CIDR.
    было бы здорово еще иметь отдельно шаблон для IP и отдельно для CIDR.
    шаблон для sed, увы, оставляет слово test.
    192.168.0.1 test  
    Но, в любом случае, - спасибо за помощь.

    Всего записей: 7352 | Зарегистр. 08-09-2001 | Отправлено: 20:50 16-12-2018
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru