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

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



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii
    Открываю пустую вкладку браузера, нажимаю на клавиатуре клавишу F12, перехожу в "консоль" и ввожу:

    Код:
     
    function test()
    {
      let rgx = new RegExp("https:\/\/(.*\.)?o3\.ua\/");
      let str = "https://что_угодно_o3.ua/*"
       
      console.log(rgx.test(str));
    }
    test();
     

    После чего кликаю на "Запустить".
    Всё это делаю в Firefox.

    ----------
    «Фашисты будущего будут называть себя антифашистами» ©

    Всего записей: 1147 | Зарегистр. 06-08-2006 | Отправлено: 11:19 14-03-2021
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Raf_SE
    let rgx = /https:\/\/(.*\.)?o3\.ua\//;
    Для варианта с классом
    let rgx = new RegExp("https://(.*\\.)?o3\\.ua/");
     
    Даже лучше в скобках .+\.

    Всего записей: 15435 | Зарегистр. 20-09-2014 | Отправлено: 11:23 14-03-2021 | Исправлено: Mavrikii, 11:35 14-03-2021
    Raf_SE



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii ( )
    Цитата:
     let rgx = new RegExp("https://(.*\\.)?o3\\.ua/");

    Да, я забыл что для того чтобы точка не интерпретировалась как спец.символ, нужно две, а не одну обратную косую черту ставить.
    Теперь всё работает. Благодарю.

    ----------
    «Фашисты будущего будут называть себя антифашистами» ©





    Не используйте время при нестандартном цитировании - не все находятся в вашей временной зоне.

    Всего записей: 1147 | Зарегистр. 06-08-2006 | Отправлено: 11:33 14-03-2021
    regist123



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

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

    Всего записей: 7198 | Зарегистр. 20-03-2009 | Отправлено: 21:25 14-03-2021 | Исправлено: regist123, 21:27 14-03-2021
    BigBadHort

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет
     
    Прошу помощи знатоков!
     
    Есть такой текст (ссылки внутри MarkDown файла)
     
    [грабли](грабли.md)
    [демонстрация_статусного_потребления](демонстрация_статусного_потребления.md)
    [детская_иллюзия_что_мир_справедлив](детская_иллюзия_что_мир_справедлив.md)
    [доктор_Добин](доктор_Добин.md)
    [если_в_20_лет_ты_не_революционер](если_в_20_лет_ты_не_революционер.md)
     
    Необходимо при помощи регеэкспа произвести замену "_" на побел ТОЛЬКО  МЕЖДУ []
     
    После долгих мучений удалось настроить замену там где два слова
     
    ^(\[)([а-яА-ЯёЁ]*)([\W_])([а-яА-ЯёЁ]*)(\])
    на
    $1$2 $4$5
     
    Как мне сделать запрос на любое количество слов?
     
    Заранее спасибо!

    Всего записей: 8 | Зарегистр. 22-05-2015 | Отправлено: 11:34 15-03-2021 | Исправлено: BigBadHort, 14:19 15-03-2021
    YuS 2



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

    Цитата:
    Как мне сделать запрос на любое количество слов?

    AkelPad
    SearchReplace.js
     
    Что:\[[^\]]+\]
    Чем:$0.replace(/_/g," ")
     
    [v] Регулярные выражения
    [v] Многострочно
    [v] Заменять на функцию
     
     

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 12:03 15-03-2021
    BigBadHort

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо!!
    Только непонятно где этот плагин найти  
    Установил akelpad с плагинами - такого не нашел
    искал на
    http://akelpad.sourceforge.net/ru/plugins.php  
    И там такого нету
     
    Не могли бы вы поделиться ссылочкой?
     
    Пока намутил такой регексп
     
    (^\[)([\W|\d]*)\_([\W|\d]*)(?:\_([\W|\d]*))?(?:\_([\W|\d]*))?(?:\_([\W|\d]*))?(?:\_([\W|\d]*))?(?:\_([\W|\d]*))?(\])
     
    замена
     
    $1$2 $3 $4 $5 $6 $7 $8$9
     
    В принципе работает, но есть одна проблемка - у коротких выражений суммируются пробелы...
     
    Как это решить не знаю.  
     
    А можно как то сделать встроенные запросы?  
    Чтобы пременить запрос к результату?

    Всего записей: 8 | Зарегистр. 22-05-2015 | Отправлено: 14:34 15-03-2021 | Исправлено: BigBadHort, 17:04 15-03-2021
    Romul81



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

    Цитата:
    Пока намутил такой регексп

    Если движок поддерживает Variable Length Lookbehind, то так:

    Код:
    (?<=\[[^\r\n\]]*)_(?=[^\r\n\]]*\])

     
    Добавлено:
    BigBadHort (Пост)

    Цитата:
    А можно как то сделать встроенные запросы?  
    Чтобы пременить запрос к результату?

    Непонятно о чём речь вообще.

    Всего записей: 1329 | Зарегистр. 03-03-2008 | Отправлено: 16:46 18-03-2021
    YuS 2



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

    Цитата:
    Не могли бы вы поделиться ссылочкой?


    Цитата:
    искал на
    http://akelpad.sourceforge.net/ru/plugins.php  
    И там такого нету

    Правильно искали... и там такой есть, он находится в пакете плагинов, штатный скрипт.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 10:40 22-03-2021
    LibVik

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    эту задачу можно просто решить с помощью TextPipe
     
    фильтр Find Pattern (perl)
    \[.+\]
    Action send matching text to subfiltr
    subfiltr Replace (Exact)
    заменить _ на пробел
     
    дольше писать, чем сделать
    Забирай  для 9.7.3

    Всего записей: 58 | Зарегистр. 22-06-2019 | Отправлено: 22:37 26-03-2021 | Исправлено: LibVik, 22:43 26-03-2021
    leosan

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




    Нарушение п. 2.11. главы VIII Соглашения по использованию

    Всего записей: 61168 | Зарегистр. 12-11-2004 | Отправлено: 14:13 28-03-2021
    andrejka k

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день.
    Есть задумка спарсить из ЛОКАЛЬНОГО html-файла все имена пользователей, которые указаны в тэге <div class="from_name">ИМЯ</div>. Имена могут встречаться как один, так и несколько раз. Хоть задача заключается в получении уникальных имен, достаточно решения, которое будет находить вообще все вхождения, которые позже можно отфильтровать в эксель.
    Как я делаю сейчас: я в Notepad++ в меню поиска, в поле Найти указываю: <div class="from_name">.
    В итоге в окошке внизу получаю следующее:
    Search "<div class="from_name">" (131 hits in 1 file)
      C:\Users\****\file.html (131 hits)
        Line 74:        <div class="from_name">
        Line 114:        <div class="from_name">
        Line 150:        <div class="from_name">
    Не подскажете, что и как нужно сделать, чтобы получить в строках с совпадениями ВЕСЬ ТЕКСТ СТРОКИ, в котором и будут находиться интересующие меня ИМЕНА?
    Предполагаю, что это должна быть какая-то команда с регулярными выражениями, но своих мозгов, чтобы такую команду написать, не хватает. Поэтому решил прибегнуть к коллективному разуму.
    Либо если кто-то знает, как моя задача решается иными способами, не требующими знаний регулярных выражений или каких-то специфических языков или инструментов, подскажите, пожалуйста, альтернативы.
    Заранее спасибо.

    Всего записей: 1232 | Зарегистр. 13-05-2003 | Отправлено: 00:49 29-03-2021
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andrejka k
    при чем тут регулярка?
    это особенность работы Notepad++, в теме о нем и нужно спрашивать.

    Цитата:
    Line 74:        <div class="from_name">

    если ИМЯ находится на той же строке, то его тоже должно показывать - всю строку целиком.
    не будет если имя расположено на другой строке.
     
    можно так (вставить текст, нажать кнопку, забрать текст) - https://jsfiddle.net/gty54rea/1/

    Всего записей: 15435 | Зарегистр. 20-09-2014 | Отправлено: 01:35 29-03-2021
    pntr4



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andrejka k
    Регулярки для этого не нужны. Достаточно <div class="from_name"> заменить на \r\n (возврат каретки\перевод строки) <div class="from_name"> (режим регулярных выражений. Ну и далее, удалить теги html или как-то структурировать данные, удалить дубликаты строк и т.п., в зависимости от набора.
    EmEditor для этих целей подходит гораздо лучше, в нем есть выделение столбцов, способы извлекать найденные вхождения в тексте (то с чем вы не можете справится в Notepad++)

    Всего записей: 394 | Зарегистр. 07-11-2010 | Отправлено: 10:34 29-03-2021 | Исправлено: pntr4, 10:36 29-03-2021
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andrejka k,
    пример файла есть?

    Всего записей: 7650 | Зарегистр. 08-09-2001 | Отправлено: 11:41 29-03-2021
    Fenrizz



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

    Цитата:
    Есть задумка спарсить из ЛОКАЛЬНОГО html-файла все имена пользователей, которые указаны в тэге <div class="from_name">ИМЯ</div>.  

    Лучше всего использовать xmllint из пакета Libxml2 с ключем --html
     

    Цитата:
    xmllint.exe --encode UTF-8 --html --xpath "//div[@class=\"from_name\"]" file.html 2>nul  

     
     
    Или pup - https://github.com/ericchiang/pup/releases

    Цитата:
    pup is a command line tool for processing HTML. It reads from stdin, prints to stdout, and allows the user to filter parts of the page using CSS selectors.
     
    Inspired by jq, pup aims to be a fast and flexible way of exploring HTML from the terminal.  

     
    Добавлено:

    Цитата:
    Не подскажете, что и как нужно сделать, чтобы получить в строках с совпадениями ВЕСЬ ТЕКСТ СТРОКИ, в котором и будут находиться интересующие меня ИМЕНА?  

    FINDSTR /I /N /C:"div class=\"from_name\"" file.html  

    Всего записей: 688 | Зарегистр. 12-09-2017 | Отправлено: 12:18 29-03-2021 | Исправлено: Fenrizz, 13:16 29-03-2021
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andrejka k
    как правильно здесь уже заметили использование регулярок в данном случае избыточно - есть много вариантов попроще:

    Код:
    xidel --xquery '//div[@class="from_name"]' file.html

    Всего записей: 7650 | Зарегистр. 08-09-2001 | Отправлено: 17:13 29-03-2021
    andrejka k

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Mavrikii
    pntr4
    los
    Fenrizz
    Всем большое спасибо за помощь. Вариантов оказалось действительно много
     
     

    Всего записей: 1232 | Зарегистр. 13-05-2003 | Отправлено: 18:45 29-03-2021
    Fenrizz



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andrejka k
    Если надо конкретно с регулярными выражениями, то на PowerShell

    Код:
    PowerShell -Command "Select-String -Path 'file.html' -Pattern '<div class=\"from_name\">(\w+)</div>' -AllMatches | ForEach-Object {$_.Matches} | ForEach-Object {$_.Groups[1].Value}  

    Всего записей: 688 | Зарегистр. 12-09-2017 | Отправлено: 22:45 29-03-2021 | Исправлено: Fenrizz, 23:10 29-03-2021
    PryMan



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Гуру, выручайте.
     
    Нужно выбрать данные из документа вот такой структуры. А именно - записи из тегов "record".
    В данном примере строки "тут может быть всё, что может быть напечатано".

    Код:
     
        <record ID="0" dataID="0x0">
           
        </record>
        <record ID="1" dataID="0x0">
          тут может быть всё, что может быть напечатано
        </record>
        <record ID="2" dataID="0x0">
          тут может быть всё, что может быть напечатано
        </record>
     

     
    Если в записи есть хоть что-то, то всё работает, но если запись пустая, то захватывается и следующая запись.
    regex нужен для Питона.
     
    Заранее большое спасибо! :)  
     
    ссылка на тест - https://regex101.com/r/JkZr1T/1

    Всего записей: 157 | Зарегистр. 01-08-2018 | Отправлено: 21:49 06-04-2021 | Исправлено: PryMan, 21:49 06-04-2021
    Открыть новую тему     Написать ответ в эту тему

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