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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 90 91 92 93 94 95 96 97

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

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
    Romul81



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

    Цитата:
    Тогда так:  

    Тогда уже так:

    Код:
    ^[^\n\r]*PVD-666432[^\n\r]*+(?:\r?\n)?

    Задача, ведь, в т.ч. отвязать регулярку от формата окончания строк.
    YuS_2 (Пост)

    Цитата:
    Что значит посимвольный откат?

    Ваш вариант (почти):
       
    Вот именно это я называю посимвольным откатом.
     
    Мой вариант:
       
     
    Добавлено:
    Но хуже всего то, что подобный откат будет производиться на всех строках, даже если в них нет совпадения.
     
    З.Ы. С другой стороны, нежадный захват вперёд делает примерно то же самое...

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 11:03 14-05-2019 | Исправлено: Romul81, 11:11 14-05-2019
    YuS_2



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

    Цитата:
    в т.ч. отвязать регулярку от формата окончания строк.

    можно и так... если критичен этот формат. Чем универсальнее, тем, конечно, лучше...

    Цитата:
    Вот именно это я называю посимвольным откатом.

    А, вон про что речь...
    Ну, это легко решается превращением жадного квантификатора "*" в ленивый "*?", что значительно сокращает количество "шагов":

    Код:
    ^[^\n\r]*?PVD-666432[^\n\r]*+\n?

    в последней ссылке это есть, кстати.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 11:16 14-05-2019
    Romul81



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

    Цитата:

    Код:
    ^[^\n\r]*?PVD-666432[^\n\r]*+\n?

    Ещё раз, в вашей регулярке не понятен смысл последнего \n?. В файле с виндовым окончанием строк эти самые окончания строк не удаляются. Остаются пустые строки на месте удалённых.

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 11:20 14-05-2019
    YuS_2



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

    Цитата:
    Ещё раз, в вашей регулярке не понятен смысл последнего \n?.

    Да ладно? Что там непонятного? Окончания строк сделайте как требуется и вперед...
     
     
    Ваш-то вариант:
     14-05-2019

    Цитата:
    (?m-s:^.*?PVD-666432.*(?:\r?\n|\z))

    - будет работать с файлам MAC-формата?
     
    А мой, в таком виде:

    Код:
    ^[^\n\r]*?PVD-666432[^\n\r]*+\r?\n?

    будет работать с любым форматом и шагов у него поменьше будет, т.е. быстродействие повыше ... пробуйте.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:01 14-05-2019
    Romul81



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

    Цитата:
    Да ладно? Что там непонятного?  

    Непонятно то, что, это решение заточено только на один формат окончания строк, тогда как мы уже до этого обсуждали, что желательно универсальное решение.

    Цитата:
    Окончания строк сделайте как требуется и вперед...

    Сделал уже: (?:\r?\n)?
    Я, собственно, изначально и предложил это универсальное решение. Тут ведь как получается. Задаётся вопрос, т.е. ТЗ. Я предлагаю максимально корректное, оптимальное решение. Вы тоже предлагаете свои решения. Я показываю чем они не оптимальны. А вы отвечаете в духе "а, ну тогда заменить на нежадный квантификатор", либо "Окончания строк сделайте как требуется и вперед"... Фишка в том, что если так сделать, то получится ... как раз тот вариант, который я и предлагал изначально. Как-то не конструктивно получается.
     

    Цитата:
    Ваш-то вариант:  
     14-05-2019  
     
    Цитата:
    (?m-s:^.*?PVD-666432.*(?:\r?\n|\z))
     
    - будет работать с файлам MAC-формата?

    Зря ёрничаете. На MAC-системах уже лет двадцать как используется \n перевод строки. Вики

    Цитата:
    CR (ASCII 0x0D) используется в 8-битовых машинах Commodore, машинах TRS-80, Apple II, системах Mac OS до версии 9 и OS-9;

    Mac OS 9 была выпущена в лохматом 1999-м году. И уже в ней использовался \n.
    Ещё.

    Цитата:
    Существует распространённое заблуждение, что на Mac для переноса строк используется \r. На самом же деле этот способ на маках является ископаемым, а на данный момент используется перенос строк как в *nix — \n.

    По факту, таких файлов мне в реальной жизни видеть не приходилось.

    Цитата:
    А мой, в таком виде:  
     
    Код:
    ^[^\n\r]*?PVD-666432[^\n\r]*+\r?\n?
     
    будет работать с любым форматом

    Проблема этого кода, что он не консистентный. Если у вас в исходнике по какой-то причине в строке затесался CR, после которого не следует LF, то обрезка будет как раз по этот CR, и далеко не факт, что это реальное окончание строки. Ещё раз, корректное решение - \r?\n
    YuS_2 (Пост)

    Цитата:
    и шагов у него поменьше будет, т.е. быстродействие повыше ... пробуйте.  

    улыбнуло. Честно! Я не уверен, что даже на 5-ти-гигабайтном файле будет заметна разница. Различные системные флуктуации и то привнесут больший разброс результатов при многократном запуске теста.
     

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 14:30 14-05-2019
    YuS_2



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

    Цитата:
    Я, собственно, изначально и предложил это универсальное решение.

    Начнем с того, что, как раз, изначально, универсального и не было. Ссылку выше я привел.
    Есть желание разглядывать в чужом глазу соринки? Сначала надо в собственном все бревна повытаскивать...
    Существует возможность, что перевод строки будет обозначен "\r" ? Существует. Универсальное, в этом случае, ваше решение? Нет. Значит, надо исправлять, а не ссылками кидаться, что и где не используется, с какого года и какие по факту знаки стоят.
    А то ведь, ссылки и я умею приводить, да ещё с цитатами:

    Цитата:
    Возврат каретки (англ. carriage return, CR) — управляющий символ ASCII (0x0D, 1310, '\r'), при выводе которого курсор перемещается к левому краю поля. Этот управляющий символ вводится клавишей «Enter». Будучи записан в файле, в отдельности рассматривается как перевод строки только в системах Macintosh.

    ссылка, кстати,  Ваша же
     
    А аргумент вида:

    Цитата:
    таких файлов мне в реальной жизни видеть не приходилось.

    ни разу не аргумент... мне, например, приходилось.

     
    Поэтому, ещё раз:

    Цитата:
    Ещё раз, корректное решение - \r?\n

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

    Цитата:
    улыбнуло.

    На то был и расчет... смайлик там для этого и нарисован. Не стоит слишком серьезно всё воспринимать...
     
    PS

    Цитата:
    Фишка в том, что если так сделать, то получится ... как раз тот вариант, который я и предлагал изначально. Как-то не конструктивно получается.

    и да, мне вот это не понравилось совсем. Ибо теперь мучает один назойливый вопрос: Вы, случайно, не покупали монопольное право сюда постить?

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 15:15 14-05-2019 | Исправлено: YuS_2, 15:43 14-05-2019
    Romul81



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

    Цитата:
    Есть желание разглядывать в чужом глазу соринки? Сначала надо в собственном все бревна повытаскивать...  

    Давайте не будем скатываться до аргументации уровня "сам дурак".

    Цитата:
    Существует возможность, что перевод строки будет обозначен "\r" ? Существует. Универсальное, в этом случае, ваше решение? Нет.

    Т.е., вы, "закусив удила", пытаетесь мне доказать, что ваше решение, условно говоря, покрывающее 50% возможных ситуаций, является более универсальным, чем моё, отрабатывающее (тоже условно) 99,9% ситуаций? Надеюсь, я правильно понял вашу ...логику?
    Тогда, могу вам ответить вашими же словами - "Окончания строк сделайте как требуется и вперед". Даже предложу вариант: (?:\r?\n|\r(?!\n)|\z)
     

    Цитата:
    А то ведь, ссылки и я умею приводить, да ещё с цитатами:  
     
    Цитата:

    Цитата:
    Возврат каретки (англ. carriage return, CR) — управляющий символ ASCII (0x0D, 1310, '\r'), при выводе которого курсор перемещается к левому краю поля. Этот управляющий символ вводится клавишей «Enter». Будучи записан в файле, в отдельности рассматривается как перевод строки только в системах Macintosh.

    Я где-то отрицал это утверждение?... Ключевой момент здесь то, что уже 20 лет как в этих самых системах Macintosh используется LF в качестве перевода строки. А CR вполне себе продолжает существовать, но только на системах Windows и только в сочетании со следующим за ним LF. Так что не понял, что вы хотели показать своим скриншотом.
     

    Цитата:
    это не корректное решение, в силу того, что возможно использование одиночного символа 0x0D в качестве перевода строки, т.е. на нем ваш "корректный" вариант споткнется, а значит он совсем не универсален.

    это "некорректное решение" присутствует чуть ли не во всех учебниках, а также в документации и примерах JGSoft. Я, конечно, всегда стараюсь с уважением относиться к аргументации оппонента, но выбирая между вами и Jan Goyvaerts, приоритет отдаю последнему, уж извините.

    Цитата:
    Не стоит слишком серьезно всё воспринимать

    Каюсь, есть грешок ))

    Цитата:
    и да, мне вот это не понравилось совсем. Ибо теперь мучает один назойливый вопрос: Вы, случайно, не покупали монопольное право сюда постить?

    Зря вы так. Просто постарайтесь абстрагироваться от тональности дискуссии. Проанализируйте изначально предложенные решения. Моё и ваше. И честно ответьте себе на вопрос - чьё лучше?
    А по поводу постить/непостить - да ради Бога. Кто как хочет, так и .... Но коль мы уж здесь даём советы обратившимся за конкретными решениями, то я хотел бы, чтоб эти ответы были максимально корректными. Если я вижу недостатки в каком-либо из предложенных решений, молчать не буду, не взирая на персоналии. Пусть спрашивающий имеет представление о "подводных камнях" того или иного решения.
    Могу, конечно, и не постить. Но кому-то станет от этого лучше/легче?... Вопрос риторический.
    И самое главное. На истину в последней инстанции не претендую. Всего лишь аргументированно отстаиваю своё мнение.
     
    Добавлено:
    З.Ы. А "неконструктивно" было сказано не в том плане что вы предложили своё решение, а в том, что на мои комментарии вы отвечали типа, ну да, поперчить, посолить по вкусу - кому как нравится. И если применить это "по вкусу", то получилось бы именно предложенное мной изначально решение.
    А так, пишите, конечно, Бог с вами!
    Но молчать не буду!)))

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 16:28 14-05-2019 | Исправлено: Romul81, 16:34 14-05-2019
    YuS_2



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

    Цитата:
    Давайте не будем скатываться до аргументации уровня "сам дурак".  

    Где? Всего лишь, намекнул, что критикуя чужое решение, неплохо бы прежде проверить собственное - а идеальное ли оно?

    Цитата:
    пытаетесь мне доказать

    Нет, вот этого мне точно не нужно... могу лишь указать на ошибку, если увижу её, но доказывать ничего не стану. Во всяком случае, в данной ситуации.
     

    Цитата:
    покрывающее 50% возможных ситуаций, является более универсальным, чем моё, отрабатывающее (тоже условно) 99,9% ситуаций?  

    Статистические данные в наличии или возможные ситуации каждый создает по собственному разумению? Это не спортивно, то бишь, по сути, подгонка входных данных под алгоритм, не более того...
     

    Цитата:
    Надеюсь, я правильно понял вашу ...логику?

    Нет, неверно. Я не настаиваю на том, что мое решение единственно правильное и самое-самое, в отличие от...
    Лучше процитирую, чтобы не быть голословным:

    Цитата:
    Я, собственно, изначально и предложил это универсальное решение.


    Цитата:
    Я предлагаю максимально корректное, оптимальное решение.


    Цитата:
    получится ... как раз тот вариант, который я и предлагал изначально.


    Цитата:
    моё, отрабатывающее (тоже условно) 99,9% ситуаций

    как-то так...
     

    Цитата:
    Даже предложу вариант: (?:\r?\n|\r(?!\n)|\z)

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

    Цитата:
    Ключевой момент здесь то, что уже 20 лет как в этих самых системах Macintosh используется LF в качестве перевода строки.

    Это неважно, сколько лет, документы могут иметь любую дату создания и содержать именно то, что было допустимо и использовалось на момент создания.
    Если условия заранее не оговорены, то предполагать можно, что угодно. Если решение заявлено универсальным, то оно просто обязано учитывать все возможные варианты, иначе такая универсальность, всего лишь пшик...
     

    Цитата:
    Так что не понял, что вы хотели показать своим скриншотом.

    Если посмотреть внимательно, то можно заметить, что на скриншоте показан документ, в котором отсутствуют символы 0x0A. Тем не менее, это текстовый документ. Может так будет нагляднее:

     

    Цитата:
    всегда стараюсь с уважением относиться к аргументации оппонента, но выбирая между вами и Jan Goyvaerts, приоритет отдаю последнему, уж извините.

    Ну, а я в свою очередь, предпочитаю следовать этому правилу:
    "Платон мне дорог, но истина дороже."
    И извиняться за это не буду.
    Но повторюсь таки:
    Если решение "не умеет" обрабатывать какую-либо, пусть редкую, но возможную ситуацию, то это не значит, что оно плохое и негодное, оно, как минимум, уже точно не универсальное.
     

    Цитата:
    И честно ответьте себе на вопрос - чьё лучше?

    Сейчас достану свой эталонный писькомер и будем измерять длину...
     

    Цитата:
    Всего лишь аргументированно отстаиваю своё мнение.

    Вот, честно. С аргументами согласился бы и признал бы, что ошибаюсь. Но увы, пока аргументов не увидел, а это:

    Цитата:
    По факту, таких файлов мне в реальной жизни видеть не приходилось.


    Цитата:
    моё, отрабатывающее (тоже условно) 99,9% ситуаций


    Цитата:
    уже 20 лет как в этих самых системах Macintosh используется LF в качестве перевода строки.

    - на аргументы, имхо, ну вот никак не тянет, по всем параметрам.
     

    Цитата:
    Но молчать не буду!

    И я здесь молчать не буду!!!

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:42 14-05-2019
    Romul81



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    чё-то надоело мне. Не хочу грубить, поэтому продолжайте борцунствовать в одиночестве.
    С уважением ко всем.

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 17:49 14-05-2019
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    1. В этом месте
    .*(?:\r?\n|\z)
    казалось бы точка должна захватить \r и нет необходимости указывать, но в Notepad++ не работает, а в AutoIt3-3.3.8.1 работает.
    2. Казалось бы -s зачем он там нужен, но явно указывает поведение если уммолчальное изменено, тот же флаг в Notepad++, который включает (?s), теперь игнорируется и напротив отсутствие флага, при наличии (?s) работает как с флагом.

    Всего записей: 4547 | Зарегистр. 03-05-2006 | Отправлено: 18:03 14-05-2019
    Romul81



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

    Цитата:
    казалось бы точка должна захватить \r и нет необходимости указывать, но в Notepad++ не работает, а в AutoIt3-3.3.8.1 работает.  

    Я как раз отключил это поведение флагом -s . \r относится к классу символов "окончание строк", поэтому и присутствует флаг -s, запрещающий точке захватывать эти символы.

    Цитата:
    который включает (?s), теперь игнорируется и напротив отсутствие флага, при наличии (?s) работает как с флагом.

    У меня не так (старая лохматая версия от 2014 года). Я потому и сделал это через флаг, т.к. не мог знать, какая опция включена/отключена у юзера. У меня работает мандаторно, т.е. поведение не обусловлено (не)стоящей галкой в чекбоксе.
    В принципе, точку можно безболезненно заменить на [^\r\n]

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 18:26 14-05-2019
    YuS_2



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

    Цитата:
    в Notepad++ не работает

    В реализациях возможны варианты ведь.  
    Например, в AkelPad:

    Цитата:
    \n Любая новая строка. Для поиска Unix новой строки используйте '\x0a'.  
    \r Любая новая строка. Для поиска Mac новой строки используйте '\x0d'.  

    - т.е. что \r, что \n обозначают, по сути, одно и то же и не разделяются, кроме как непосредственным указанием шестнадцатеричного кода и визуализацией.  
    Если же в опциях указать, что точка захватывает перевод строки, то ".*" захватит весь текст, а если указать, что точка не захватывает перевод строки, то ни \r, ни \n не захватывается.
    Возможно, в np++ тот же самый алгоритм работает.

    Цитата:
    тот же флаг в Notepad++, который включает (?s), теперь игнорируется и напротив отсутствие флага, при наличии (?s) работает как с флагом.

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

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:37 14-05-2019
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_2
    Цитата:
    Что-то не совсем понятно, в чем вопрос...  
    Конечно это не вопрос, это удобство в том что рег.выр. не возможно поломать внешними чекбоксами. Теоретически непонятно зачем этот чекбокс нужен, он всего лишь один из нескольких флагов, почему бы не "m" или не "x", или не "i"?
     
    Romul81
    Цитата:
    \r относится к классу символов "окончание строк"
    Кто знает, как автор завтра определит что является окончанием. Возможно он улучшает понимание и поведение, но это также требует переписывание всвязи с новыми условиями.

    Всего записей: 4547 | Зарегистр. 03-05-2006 | Отправлено: 19:49 14-05-2019 | Исправлено: AZJIO, 19:54 14-05-2019
    YuS_2



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

    Цитата:
    Теоретически непонятно зачем этот чекбокс нужен, он всего лишь один из нескольких флагов, почему бы не "m" или не "x", или не "i"?

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

    Цитата:
    Возможно он улучшает понимание и поведение

    Скорее стремление к универсальности... в связи с:

    Цитата:
    По стандарту, любое совместимое с Юникодом приложение должно воспринимать как перевод строки каждый из нижеследующих символов:
     
    LF (U+000A): англ. line feed — подача строки <ПС>;
    CR (U+000D): англ. carriage return — возврат каретки <ВК>;
    NEL (U+0085): англ. next line — переход на следующую строку;
    LS (U+2028): англ. line separator — разделитель строк;
    PS (U+2029): англ. paragraph separator — разделитель абзацев.
    Последовательность CR+LF (U+000D U+000A) надлежит воспринимать как один перевод строки, а не два[1].

    и:

    Цитата:
    Отсутствие единого общепринятого представления перевода строки в разных операционных системах осложняет обмен текстовыми данными между ними. Юникод старается примирить эту разницу, уравнивая CR, LF и CR+LF, однако вступает в противоречие с наследуемым им ASCII при трактовке последовательности LF+CR, не предварённой CR: согласно ASCII это один перевод строки, а согласно Юникоду — два.

    В общем, для упрощения жизни пользователям...
     

    Цитата:
    но это также требует переписывание всвязи с новыми условиями.

    Это да, совместимость шаблонов от этого страдает иногда, при переносе, но имхо не настолько критично, чтобы нельзя было поправить, не прилагая к тому огромных усилий.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 20:03 14-05-2019 | Исправлено: YuS_2, 20:15 14-05-2019
    AZJIO



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

    Цитата:
    В общем, непонятно про какие чекбоксы говорим...  
    Notepad++, я же оттуда сюда принёс задачу. Флаг стоит в диалоге поиска рядом с радиокнопкой типа поиска.

    Цитата:
    Это да, совместимость шаблонов от этого страдает иногда
    Причём движок один и тот же, просто на этапе компиляции можно задать некоторые умолчальные вещи, далее обновление самим автором движка, это кроме того что существуют разные движки.

    Всего записей: 4547 | Зарегистр. 03-05-2006 | Отправлено: 21:14 14-05-2019
    YuS_2



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

    Цитата:
    Флаг стоит в диалоге поиска рядом с радиокнопкой типа поиска.

    Вольным локализаторам по рукам бы надавать за такие переводы...
    оригинал:

    Код:
    . matches newline

    вроде понятно, но перевод:

    Код:
    и новые строки

    Чего новые строки? С чем "и"? м-да уж...
    Если экономия длины строки диалога вновата, то хотя бы так можно было бы сделать:

    Код:
    . захватывает \n

    и то уже понятнее о чем речь...
     

    Цитата:
    Причём движок один и тот же

    Так и появляются различные диалекты...  
    Что поделать? Нет  стандарта - нет и единообразия... а в итоге страдают пользователи, да.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 08:03 15-05-2019
    IvanStepanov

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как записать с помощью REGEXP такое выражение:
    "в цепочке символов длиной не более 400 символов должны встречаться в произвольном порядке любые не менее чем 5 из данных 10-ти слов" и далее перечисляются слова.
     
    В какой программе наиболее удобно писать такой сложности REGEXP-ы?

    Всего записей: 136 | Зарегистр. 11-05-2019 | Отправлено: 15:56 15-05-2019
    Romul81



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

    Цитата:
    "в цепочке символов длиной не более 400 символов должны встречаться в произвольном порядке любые не менее чем 5 из данных 10-ти слов"

     
    Если под "цепочкой символов" вы понимаете строку, и требуется найти такие строки, то:

    Код:
    (?m-s:^(?=.{10,400}+$).*?(?:(?=\b(one|two|three|four|five|six|seven|eight|nine|ten)\b)(?:(?!\b\1\b).)*\b\1\b.*?){5}.*$)

     
    Добавлено:
    З.Ы. Короче:

    Код:
    (?m-s:^(?=.{10,400}+$).*?(?:(?=\b(one|two|three|four|five|six|seven|eight|nine|ten)\b)\1.*?){5}.*$)

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 16:21 15-05-2019
    IvanStepanov

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Romul81
    Что-то не работает.
     
    Протестировал Ваше выражение в RegexBuddy 4.5.0 на файле такого содержания:
     
    бла бла one two three four five six seven eight nine ten бла бла  бла бла  бла бла  бла бла .....

    Всего записей: 136 | Зарегистр. 11-05-2019 | Отправлено: 16:35 15-05-2019 | Исправлено: IvanStepanov, 16:37 15-05-2019
    Romul81



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

    Цитата:
    Что-то не работает.

     
    Вы же сами сказали, что строка длиной не более 400 символов. На короткой строке работает.
     
    Добавлено:
    З.Ы. RegexBuddy сам по себе не показатель, без указания конкретного из десятков синтаксисов, имеющихся в нём.
    Тестировалось, если что, в Notepad++. Т.е. выражение PCRE.

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 16:40 15-05-2019
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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 90 91 92 93 94 95 96 97

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru