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

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



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

    Цитата:
    Нужно в словаре по части заданной транскрипции выделить все статьи которые ее содержат.

    Выделить? Это не задача.
    Ну, хорошо, вот вам выделить:
    1. Берем AkelPad.
    2. Выделяем часть транскрипции.
    3. Используем инструмент "Отметить"
    4. Получаем подсвеченный текст, который был выделен, во всем документе.
    5. По отмеченным кускам можно перепрыгивать, используя инструмент "Отметить-Найти отметку (вниз/вверх)

    Только к регэкспам, это не имеет никакого отношения, совсем, т.е. абсолютно.
    Устраивает решение? Нет?  
    Описывайте задачу полностью, либо никакой другой помощи не увидите...

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 15:07 24-10-2019
    gerxer

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_2
    Так нужно все статьи выделить, в которых часть транскрипции находится, потом их я скопирую в отдельный файл.
    Чтобы было вот так http://prntscr.com/pnl6x5, а сам поиск транскрипции был по регулярному выражению тоже(выше приводил пример одного из таких), а не просто по знакам.

    Всего записей: 565 | Зарегистр. 19-06-2014 | Отправлено: 17:07 24-10-2019 | Исправлено: gerxer, 17:10 24-10-2019
    YuS_2



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

    Цитата:
    Так нужно все статьи выделить, в которых часть транскрипции находится, потом их я скопирую в отдельный файл.

    Так это уже ближе к задаче...
    Я бы сделал так:
    powershell
    script.ps1

    Код:
    # Шаблон для поиска, поддерживаются регулярные выражения.
    $tmpl = 'əˈkʌstəm'
     
    # Разделитель для разбиения файла на фрагменты.
    $regexp = '\n(?=\p{L})'
     
    # Наименование файла словаря.
    $file = 'En-En-MWALD_short.dsl'
     
    # Собственно, код обработки. На выходе получаем файл out.dsl, с отфильтрованными абзацам.
    (gc $file -raw -enc unicode) -split $regexp|?{$_ -match $tmpl}|out-file out.dsl -enc unicode

     
    Добавлено:
    Вместо html кода, в переменной $tmpl - символы транскрипции... форум напрямую их не умеет отображать...

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 19:16 24-10-2019 | Исправлено: YuS_2, 21:48 24-10-2019
    gerxer

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_2
    А можно простой регуляркой через поиск, а то с этим я не пойму что делать? Даже мое регулярное  выражение для самой транскрипции https://regex101.com/r/AKyHth/2  не вижу в этом коде, чтобы когда его можно было подкорректировать.

    Всего записей: 565 | Зарегистр. 19-06-2014 | Отправлено: 21:38 24-10-2019 | Исправлено: gerxer, 21:39 24-10-2019
    YuS_2



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

    Цитата:
    с этим я не пойму что делать?

    Это скрипт powershell. Его надо записать в файл в кодировке UTF8, положить рядом файл словаря и запустить.
    Чтобы было понятно, что и где, добавил комментарии.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 21:47 24-10-2019
    gerxer

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_2
    Не хочет запускаться http://prntscr.com/pnq9ih
    Сам файл https://wdho.ru/8UwF
     

    Всего записей: 565 | Зарегистр. 19-06-2014 | Отправлено: 23:09 24-10-2019
    YuS_2



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

    Цитата:
    Не хочет запускаться

    Там же белым по-синему написано, как надо запустить... но здесь это оффтоп, с вопросами лучше сюда
     
    Добавлено:
    gerxer

    Цитата:
    Сам файл

    При использовании powershell, в переменную $tmpl, совсем не требуется писать регулярку, которая будет захватывать все строки, достаточно написать ту часть транскрипции, которая интересует. В целевом файле будут выведены все абзацы, которые содержат совпадения по шаблону из переменной $tmpl.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 07:42 25-10-2019
    gerxer

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_2
    Удалил все кроме знаков транскрипции. Получаю пустой файл на выходе.
    Короче заработало, после того как пересохранил в юникод 16 из самого powershell.
    Но ищет только по транскрипции, а по моей регулярке не работает http://prntscr.com/pnxi76

    Всего записей: 565 | Зарегистр. 19-06-2014 | Отправлено: 11:41 25-10-2019 | Исправлено: gerxer, 12:00 25-10-2019
    YuS_2



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

    Цитата:
    после того как пересохранил в юникод 16 из самого powershell.

    Что именно пересохранено?  
    Скрипт? Достаточно utf8 with BOM
    Словарь? Так он и так в uft16 LE
     

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

    Ну, давайте разбирать выражение:

    Код:
    '(\W|^)((/|'w?)\w+)'

    Здесь одинарная кавычка внутри выражения, сбивает весь синтаксический разбор...
    Надо либо экранировать её, либо использовать двойные кавычки снаружи:

    Код:
    "(\W|^)((/|'w?)\w+)"

    Но, собственно, регулярное выражение, не несет особого смысла:
    Совпадает если любой символ кроме буквы или цифы, либо начало строки, за которым сразу следует слеш или одинарная кавычка и ноль или один символ "w", за которым сразу следует одна либо более буква или цифра
    - такой набор, конечно, можно найти, но не в этом словаре...
    Например:
    одинарная кавычка - символ с кодом 0x0027
    апостроф, используемый в словаре в транскрипции - символ с кодом 0x02c8
     
    В общем, регэкспы, чтобы работали правильно, составляются не по визуальной похожести символов, а по идентичности тому, что есть в тексте.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:48 25-10-2019
    gerxer

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

    Цитата:
    Но, собственно, регулярное выражение, не несет особого смысла:  
    Совпадает если любой символ кроме буквы или цифы, либо начало строки, за которым сразу следует слеш или одинарная кавычка и ноль или один символ "w", за которым сразу следует одна либо более буква или цифра  
    - такой набор, конечно, можно найти, но не в этом словаре...

    https://regex101.com/r/AKyHth/2
    Как не несёт, оно находит все варианты транскрипций которые начинаются с этих знаков.
    После экранирования знаком / кавычки верхней(верхнее ударение) перестало находить все слова которые с него начинаются.
    А с двойными кавычками вроде бы нормально стало искать.

    Всего записей: 565 | Зарегистр. 19-06-2014 | Отправлено: 16:09 25-10-2019 | Исправлено: gerxer, 16:28 25-10-2019
    YuS_2



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

    Цитата:
    Как не несёт

    А вот так, не несет. Я вам пошагово описал ваш шаблон, таких сочетаний символов в словаре просто нет.
     

    Цитата:
    https://regex101.com/r/AKyHth/2  

    Что это за ссылка? Здесь у вас совсем другой шаблон, в отличие от того, который вы показали на скрине здесь:  25-10-2019
    Все ошибки, которые присутствуют на вашем скрине, как раз, из-за того, что там символ не 0x02c8 (Modifier Letter Vertical Line), а 0x0027 (Apostrophe)
    В общем не вводите в заблуждение, код скрипта рабочий, шаблон для поиска надо составлять согласно синтаксиса регулярных выражений, а не заниматься подбором метасимволов на предмет работоспособности.
    Сначала проверяйте свои шаблоны и формулируйте точнее, что именно требуется найти, чтобы вам подсказали именно шаблон регулярного выражения. А свои регулярки приводить не надо, они у вас пока не очень правильными получаются.
     

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 17:39 25-10-2019
    gerxer

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

    Всего записей: 565 | Зарегистр. 19-06-2014 | Отправлено: 18:42 25-10-2019 | Исправлено: gerxer, 18:43 25-10-2019
    YuS_2



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

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

    Для скрипта powershell, достаточно будет такого шаблона:
    https://regex101.com/r/fhRg4s/1

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 20:51 25-10-2019
    PryMan



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.
    Подскажите, как сделать поиск регистронезависимым?
     
    Есть строка - "Name.:.([\w\ _-]*?SuperPups[\w\ _-]*?)"
     
    Нужно найти и SuperPups и Superpups и superpups и т.д., при этом в выданном результате поиска регистр должен быть сохранён.
     
    Проблема ещё в том, что цель поиска (в данном случае слово "SuperPups") это переменная, которая вводится пользователем. Т.е. строка формируется программой по шаблону.
    Программа на Питоне, если это имеет значение.

    Всего записей: 157 | Зарегистр. 01-08-2018 | Отправлено: 16:25 12-11-2019
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PryMan,
    немного не в тему, если просто найти слово superpups, то очень удобно в таких случаях использовать программу ripgrep https://github.com/BurntSushi/ripgrep
    $ rg --smart-case superpups file.txt
    выдаст результат и superpups, и Superpups и т.д.

    Всего записей: 7727 | Зарегистр. 08-09-2001 | Отправлено: 17:36 12-11-2019
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    PryMan написал(а)
    Цитата:
    Программа на Питоне, если это имеет значение.

    имеет и возможно спрашивать надо было в теме по питону.

    Цитата:
    Подскажите, как сделать поиск регистронезависимым?

    Не зависимо от того где, для этого используется флаг "i". А как там в питоне указывать флаги при указание регулярки я не знаю. Но если вы знаете, как там использовать регулярку то наверно знаете и это. Если нет, то как уже написал возможно лучше спрашивать в теме по питону (хотя возможно и тут есть люди которые разбираются в нём).

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

    Всего записей: 7198 | Зарегистр. 20-03-2009 | Отправлено: 18:41 12-11-2019 | Исправлено: regist123, 18:44 12-11-2019
    YuS_2



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

    Цитата:
    Подскажите, как сделать поиск регистронезависимым?  

    Модификаторами, вестимо...
    Например, если из всего шаблона требуется регистрозависимое совпадение исключительно по SuperPups, то шаблон составляется так:

    Код:
    Name.:.([\w\ _-]*?(?-i:SuperPups)[\w\ _-]*?)

    а если регистронезависимое, то:

    Код:
    Name.:.([\w\ _-]*?(?i:superpups)[\w\ _-]*?)

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 19:31 12-11-2019 | Исправлено: YuS_2, 19:35 12-11-2019
    PryMan



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    regist123, YuS_2 Спасибо! Всё получилось :)
     
     
    los, спасибо, буду иметь в виду. Возможно пригодится.  
     

    Всего записей: 157 | Зарегистр. 01-08-2018 | Отправлено: 02:50 13-11-2019
    PryMan



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем Доброго...
    Помогите, пожалуйста, ещё с одним вопросом.
    Нужно regex чтобы найти ссылки на файлоы mpg но не mpg2. Из констант есть только "http" (или "https") и расширение файла ".mpg"
     
    Сколько не бился, или все ссылки скопом выдаёт (включая и mpg и mpg2) или  склеивает по две ссылки вместе.
     
    Тест на regex101.com - https://regex101.com/r/rW4yiZ/1
     
    Фрагмент исходника для поиска -

    Код:
    "settings":[{"id":"9238","title":"Black","sources":[{"format":"mpg2","url":"https:\/\/s3.us-east-1.amazonaws.com\/lostsound-community\/public\/59772318915193347298.mpg2"},{"format":"mpg","url":"https:\/\/s3.us-east-1.amazonaws.com\/lostsound-community\/public\65668314728130915134.mpg"}]},{"id":"9276","title":"Green","sources":[{"format":"mpg2","url":"https:\/\/s3.us-east-1.amazonaws.com\/lostsound-community\/public\/11915080088641193967.mpg2"},{"format":"mpg","url":"https:\/\/s3.us-east-1.amazonaws.com\/lostsound-community\/public\/09079955782489631046.mpg"}]},{"id":"9285","title":"White","sources":[{"format":"mpg2","url":"http:\/\/s3.us-east-1.amazonaws.com\/lostsound-community\/public\/53474438204706089576.mpg2"},{"format":"mpg","url":"http:\/\/s3.us-east-1.amazonaws.com\/lostsound-community\/public\/02262238689944761953.mpg"}]},

    Всего записей: 157 | Зарегистр. 01-08-2018 | Отправлено: 17:52 17-11-2019
    YuS_2



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

    Код:
    \bhttps?\:[^ {}\[\]]+?\.mpg\b


    Цитата:
    Тест на regex101.com

    https://regex101.com/r/rW4yiZ/2

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:25 17-11-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