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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    I95

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    День добрый! Есть регулярка:
     

    Код:
    (?-s)^(.+)\R(?=(?s).*?^\1(?:\R|\z))

     
    или такая:
     

    Код:
    ^([^\r\n]+)$(?=.*?^\1$)

     
    которые ищут дубликаты строк. Подскажите плс, что и как в них (любой из) изменить чтобы искались только дубликаты строк, которые начинаются на "const-string"
     
    Спасибо.
     
    Update: разобрался сам.

    Всего записей: 1073 | Зарегистр. 20-03-2009 | Отправлено: 13:04 01-02-2024 | Исправлено: I95, 17:28 01-02-2024
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть сортированный список из нескольких тысяч строк:

    Код:
    adsf
    qwer
    qxio
    zxcv

    можно ли заставить регвыр остановится в поиске если начало перестало совпадать? То есть в неком списке автозавершения я ввожу "q" и рег выр ищет не несколько тысяч строк, а только до строк начинающихся с "q" и заканчивая последней строкой начинающейся с "q". Это бы могло ускорить регвыр тем что просматривает в среднем в 2 раза меньше инфы. В теории мне понадобилось бы два рег.выр., первый ищет блок с флагом "найти 1 раз", то есть прекратил бы поиск дальше, второй регвыр парсил бы это блок на строки.
    Есть флаг \G, вот что-то подобное, типа поймал начало строки и повторил в режиме (?m) до тех пор пока не прекратилось бы совпадение.

    Всего записей: 4559 | Зарегистр. 03-05-2006 | Отправлено: 18:49 15-02-2024
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    зависит от используемых средств. у многих регулярок есть модификатор m и индикаторы начала ^ и конца строки $
    просматривать все равно будет все строки, но только первый символ, а не всю строку.
    https://regex101.com/r/32GWfy/1

    Всего записей: 15589 | Зарегистр. 20-09-2014 | Отправлено: 21:06 15-02-2024 | Исправлено: Mavrikii, 22:23 15-02-2024
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii
    я делаю список автозавершения слов, как в гугле вводишь слово и гугл предлагает список слов. Я делаю экспорт всех слов и получаю в зависимости от контента справки от 2000 до 10000 слов. Конечно удаляю дубликаты, сортирую, перевожу в нижний регистр. Если количество слов около 10000 или приходится использовать рег.выр. в два прохода по списку, то при вводе я получаю притормаживание 1-2 сек. Зависит ещё и число найденных, так как сформировать список из 500 слов тоже медленнее чем из 20 слов. В итоге я использую любые пути чтобы ускорить вывод. В один проход по списку не получилось. Хотя от результатов сильнее зависит чем от регвыр, так как при вводе 3-й буквы, когда результатов меньше, то список автозавершения заметно шустрее создаётся.

    Всего записей: 4559 | Зарегистр. 03-05-2006 | Отправлено: 13:48 16-02-2024 | Исправлено: AZJIO, 13:50 16-02-2024
    Mavrikii

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

    Всего записей: 15589 | Зарегистр. 20-09-2014 | Отправлено: 01:08 17-02-2024
    AZJIO



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

    Цитата:
    то, что вы хотите (остановиться где то) - регулярное выражение так не умеет.  

    в JavaScript без флага "g" вполне умеет, значит это не техническая проблема. В AutoIt3 с флагом 1 и 2 тоже умеет. В PureBasic тоже можно сделать один шаг поиска.
    Но видимо задача слишком специфическая, чтобы под неё кто-то подстраивал движок регвыр. Кроме случая может я просто не знаю об этой возможности. Наверняка разработчики подстраиваются под практические задачи. В теории можно даже сделать посимвольный поиск средствами языка, уже не раз это позволяло избежать вставки в программу движок регвыр, но именно в SpiderBasic преобразующий код в JavaScript проблема указателей, хотя я не знаток именно в SpiderBasic по теме указателей, попробую сейчас поштудировать, может и получится сделать собственный посимвольный парсер.

    Всего записей: 4559 | Зарегистр. 03-05-2006 | Отправлено: 13:43 17-02-2024
    Mavrikii

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

    Цитата:
    в JavaScript без флага "g" вполне умеет

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

    Всего записей: 15589 | Зарегистр. 20-09-2014 | Отправлено: 20:08 17-02-2024
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Обновил RegExpPB (на PureBasic) (Windows/Linux, x32/x64). Добавлен тест диапазонов.
    скриншот, скриншот диапазона

    Всего записей: 4559 | Зарегистр. 03-05-2006 | Отправлено: 03:44 25-02-2024 | Исправлено: AZJIO, 20:36 26-02-2024
    Jonmey

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

    Цитата:
    Обновил RegExpPB (на PureBasic) (Windows/Linux, x32/x64). Добавлен тест диапазонов.

    The Range Test window is out of screen board but it isn't able to change the window size.
     
    And the checkbox '(?s) dot all' would be better as 'Dot matches all' or 'Dot matches line breaks'

    Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 06:47 25-02-2024
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jonmey
    Перезалил на яндексе. Размер теперь изменяется. Перевод поправил.
    скриншот на линукс
    Перезалил, опять прокол сделал, включив принудительно английский язык. Теперь как положено на русской винде русский, на другой английский. А вот тут может параметр в ini-файле сделать, чтобы для союзных республик можно было принудительно включить русский язык. Я изначально всегда делал русский, но тогда прога для других будет непонятной, а компилировать не каждый будет и я подумал компилировать с поддержкой англ. языка. Но встречал в ситуации, когда в германии включается англ язык, а чел знает русский, и вот тут переключить принудительно имело бы смысл независимо на какой ОС это используется.
    Перезалил на яндексе, теперь LangRu=1 включает русский язык принудительно.

    Всего записей: 4559 | Зарегистр. 03-05-2006 | Отправлено: 09:58 25-02-2024 | Исправлено: AZJIO, 22:12 26-02-2024
    D1D1D1D

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет. Как записать условие поиска слов, начинающихся на буквы Ц, и не содержащих сочетания букв ъ, хь". Так не срабатывает:
     

    Код:
    ^ц(??!(ъ|хь)).)

    Всего записей: 1434 | Зарегистр. 05-04-2010 | Отправлено: 22:08 12-03-2024 | Исправлено: D1D1D1D, 22:09 12-03-2024
    Jonmey

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

    Цитата:
    Как записать условие поиска слов, начинающихся на буквы Ц, и не содержащих сочетания букв ъ, хь".

    example
    (?<!\p{L})ц((?!ъ|хь)\p{L})+(?!\p{L})

    Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 02:11 13-03-2024 | Исправлено: Jonmey, 11:13 13-03-2024
    D1D1D1D

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

    Всего записей: 1434 | Зарегистр. 05-04-2010 | Отправлено: 03:27 13-03-2024
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    D1D1D1D
    it was for PowerGrep
    Try this
    (?<!\w)ц((?!ъ|хь)\w)+(?!\w)

    Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 04:00 13-03-2024 | Исправлено: Jonmey, 11:13 13-03-2024
    Jonmey

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

    Цитата:
    Здравствуйте. Могли бы вы подсказать мне, как с помощью регулярных выражений notepad++ можно скопировать любое число находящееся между >< в подобных строках кода <span id="price_here" data-price-origin="">600</span><i id="plus"> что бы число (в данном примере 600) было бы скопировано в data-price-origin='"" и строка имела бы после этих изменений , такой вид <span id="price_here" data-price-origin="600">600</span><i id="plus">

    http://forum.ru-board.com/topic.cgi?forum=33&topic=14997#1
     
    Search:
    (<span id="price_here" data-price-origin=")(">)(\d+)(</span><i id="plus">)
    Replace to:
    \1\3\2\3\4
     
    or
     
    Search:
    (<span [^>]*)(data-price-origin=")("[^>]*>)(\d+)(</span><i [^>]*>)
    Replace to:
    \1\2\4\3\4\5

    Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 06:16 18-03-2024
    Celsus



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите разобрать эту формулу:  
    ^(.+?)\s+[[({]?(?:ft\.?|feat\.?|featuring)\s+(?:[^][(){}]+)[])}]?(\s+.+)?$
     
    ^(.+?)\s+ - начало строки, индексируемая группа №1 с любыми символами, пробел 1 или более раз
     
    [[({]? - могут присутствать симфолы [({, но могут и не присутствовать
     
    (?:ft\.?|feat\.?|featuring) - неиндексированная группа с вариантами возможных слов, одно из которых обязательно должно присутствовать
     
    \s+ - пробел 1 или более раз
     
    (?:[^][(){}]+) - вот с этим немного не понятно, это неиндексируемая группа, в которой не должно быть символов [(){} 1 или более раз?? Пока не доходит, зачем она нужна
     
    [])}]? - могут присутствать симфолы ])}, но могут и не присутствовать
     
    (\s+.+)?$ - индексируемая группа №2 в конце строки с пробелом и любыми символами 1 или больше раз, которая может присутствовать, а может и не присутствовать
     
    Выходит, нужно искать предложения, в которых есть ft или ft. или feat или feat. или featuring
    потом нужно индексировать то, что перед этими словами и после этих слов, чтобы исключить их из результата?
     
    Пример:
    Beginning feat Yulua Oreshko (Original Mix) или Beginning (feat Yulua Oreshko) (Original Mix)
    Становится Beginning (Original Mix)

    Всего записей: 388 | Зарегистр. 02-04-2011 | Отправлено: 08:49 19-04-2024 | Исправлено: Celsus, 08:55 19-04-2024
    Mavrikii

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

    Цитата:
     это неиндексируемая группа, в которой не должно быть символов [(){} 1 или более раз?? Пока не доходит, зачем она нужна

    пропустить все символы до любого из группы, если будет (либо закрытие скобок, либо открытие новых).
     

    Цитата:
    [])}]? - могут присутствать симфолы ])}, но могут и не присутствовать
     

    да, остановить пропускание символов перед закрывающими скобками
     

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

    до открытия скобок, которых может и не быть, пропустить слова и до закрытия скобок или открытия новых, которого может и не быть, тогда просто до пробела.
     
    а какая замена - это же не указано.
     
     
    ps: всегда можете протестировать (и увидеть описание) здесь, к примеру - https://regex101.com/

    Всего записей: 15589 | Зарегистр. 20-09-2014 | Отправлено: 10:45 19-04-2024 | Исправлено: Mavrikii, 10:46 19-04-2024
    drmin

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!Помогите,пожалуйста, составить регулярное выражение.
    Подробнее...

    Всего записей: 91 | Зарегистр. 21-03-2022 | Отправлено: 19:54 28-04-2024 | Исправлено: drmin, 19:56 28-04-2024
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    drmin
    не проще преобразовать эту JSON строку в объект, а потом вытащить что нужно?
    регулярка не умеет увеличивать счетчик.
     
    https://jsfiddle.net/h3jpd2vb/
    вставить в верхнее (без первой и последней кавычек), потом щелкнуть куда либо еще.

    Всего записей: 15589 | Зарегистр. 20-09-2014 | Отправлено: 20:40 28-04-2024
    drmin

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

    Цитата:
    вставить в верхнее (без первой и последней кавычек), потом щелкнуть куда либо еще.

     
    Подробнее...

    Всего записей: 91 | Зарегистр. 21-03-2022 | Отправлено: 23:11 28-04-2024 | Исправлено: drmin, 00:38 29-04-2024
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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