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

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, есть файл со ссылками вида  
    http://chat.ru/~site1  
    http://chat.ru/~site2  
    Как в Notepad++ их привести к такому виду?
    http://site1.chat.ru/  
    http://site2.chat.ru/

    Всего записей: 82 | Зарегистр. 09-12-2013 | Отправлено: 16:12 07-09-2024
    U235

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

    Код:
    chat\.ru/~(site[0-9]+)

    заменить на:

    Код:
    $1\.chat\.ru/

    Всего записей: 974 | Зарегистр. 14-12-2005 | Отправлено: 16:40 07-09-2024 | Исправлено: U235, 16:41 07-09-2024
    vil1958



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

    Цитата:
    Подскажите, есть файл со ссылками вида  
    http://chat.ru/~site1  
    http://chat.ru/~site2  
    Как в Notepad++ их привести к такому виду?
    http://site1.chat.ru/  
    http://site2.chat.ru/

     
    В Notepad++ в поиске и замене (Ctrl + H):
     
    Регулярное выражение для поиска:
    http://chat/\.ru/~([a-zA-Z0-9]+)
     
    Регулярное выражение для замены:
    http://\1.chat.ru/
     
    Работает следующим образом:
    http://chat/\.ru/~ — это статичная часть URL, которую мы ищем.
     Точка (.) экранируется с помощью обратной косой черты (\.),
     чтобы её распознать как символ точки, а не как специальный символ в регулярных выражениях.
    ([a-zA-Z0-9]+) — это группа захвата, которая ищет и сохраняет в памяти
     любую последовательность букв и цифр после символа ~.
     Эта часть представляет собой название сайта (например, site1 или site2).
    \1 — это ссылка на первую захваченную группу в регулярном выражении,
    то есть на название сайта (например, site1).

    Всего записей: 25 | Зарегистр. 24-03-2006 | Отправлено: 16:49 07-09-2024 | Исправлено: vil1958, 16:54 07-09-2024
    www_world

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

    Цитата:
    Подскажите, есть файл со ссылками вида  
    http://chat.ru/~site1  
    http://chat.ru/~site2  
    Как в Notepad++ их привести к такому виду?
    http://site1.chat.ru/  
    http://site2.chat.ru/


    Код:
    (?<=://)([^/$]+/)~([^\s]+)
    заменить на
    Код:
    \2.\1

     

    Цитата:
    а классический sed почему вам не подходит?

    Потому что sed по свои хотелки на коленке не подстроишь, в отличие от au-скриптовых программ.

    Всего записей: 437 | Зарегистр. 04-11-2018 | Отправлено: 19:29 07-09-2024 | Исправлено: www_world, 21:14 07-09-2024
    AZJIO



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

    Цитата:
    В пайпах случаем не работает? В батниках, имеется ввиду, после |

    Нет.

    Всего записей: 4536 | Зарегистр. 03-05-2006 | Отправлено: 21:02 07-09-2024
    www_world

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Значит у вас в этой программе необъятные просторы для развития. И что важно - востребованные.

    Всего записей: 437 | Зарегистр. 04-11-2018 | Отправлено: 21:17 07-09-2024
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    www_world
    Оно в каждой программе так. Учитывая что я ещё их переписываю на PureBasic, то для большинства уже написанных я даже половины функционала не выполнил. А желания уже нет, пишу то что надо СЕЙЧАС мне. Так что велика вероятность что ничего не будет. Но по сути, учитывая что GUI не нужен, то написать консольную не так уж сложно - прочитать поток, обработать в переданных параметрах, выдать в поток. У меня для консольного режима в TextReplace отдельная функция. Я думаю тут даже 99% функционала будет от авторов движка регврвыр и авторов PureBasic, а от меня лишь передать встроенной функции параметры. Так что может вас зацепит простота и вы сами напишете?
     
    Почитал ваш предыдущий пост про 100500 прог, я могу назвать только одну, которую назвал бы конкурентом Search_and_Replace, собственно которая и сподвигла меня написать подобное. Что-то даже близкое по мощи я не видел и рядом не стояло, может просветите.
     
    Из наболевшего
    1. Я несколько раз улучшал файловый движок поиска. Он стал поддерживать регвыры, инверсию.
    2. Часто в текстовых редакторах есть свой поиск, но ограниченный, поэтому дабы упростить работу я сделал ком-строку для GUI, то есть выделил слово, нажал хоткей и прога открывается уже с вставленным словом, остаётся нажать "поиск"
    3. Остальное бэкап/сценарии уже было, то есть можно в сценарий добавить десяток замен например для обработки сайта, чтобы привести к нужному результату html-страницы.
    4. На счёт цепочек поиска думаю это аналог сценария, но вот есть возможность ограничить поиск списком файлов. Встречал на форумах поделки в виде найти два слова, то есть не одну строку, а чтобы было и то и то в любом месте, по наличию. Так вот такая фича сделана методом поиска одного слова, потом список сохраняется в файл и кидается в поле пути поиска, он проверяет что это список файлов и начинает искать слово в списке указанных файлов. и Можно повторить многократно, это получится как 2 или 3 или 4 или 5 поисков слов.
    5. Кроме того - маска инверсии для слова, то есть найти где нет слова.
    6. Удобный прыжок к файл для просмотра найденного в файле. Цветной вывод результатов.
    7. А PureBasic мне помог написать это для Linux и поэкспериментировать с разными видами вывода результатов (RTF, Scintilla, HTML).
     

    Цитата:
    поддержка трех основных кодировок - локаль (ansi) / utf8 / utf16

    в настройках задаётся. У меня стоит "авто" (определяется автоматически).
     
    есть тема по проге на руборде, если что можно продолжить там обсуждение.
    Использую прогу более 10 лет, у меня она одна их ходовых, используется практически каждый день.
     

    Цитата:
    С таким названием вашу - найти нереально. Ее как бы нет. Она существует лишь для избранных славянских шаманов и легенды о ней передаются исключительно изустно на отдельных междусобойных саммитах....

    Очень даже много где я выкладывал:
    autoitscript.com | purebasic.fr | puppyrus.org | usbtor.ru | archlinux.org.ru | oszone.net

    Всего записей: 4536 | Зарегистр. 03-05-2006 | Отправлено: 11:52 08-09-2024 | Исправлено: AZJIO, 17:01 08-09-2024
    los

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

    Цитата:
    Потому что sed по свои хотелки на коленке не подстроишь, в отличие от au-скриптовых программ.

    printf %s\\n http://chat.ru/~site1 http://chat.ru/~site2 | sed -E 's|http://chat\.ru/~([a-zA-Z0-9]+)|http://\1.chat.ru/|g'
    http://site1.chat.ru/
    http://site2.chat.ru/

    Всего записей: 7629 | Зарегистр. 08-09-2001 | Отправлено: 18:21 08-09-2024
    73



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Цитата:
    Очень даже много где я выкладывал:
    autoitscript.com | purebasic.fr | puppyrus.org | usbtor.ru | archlinux.org.ru | oszone.net
    Как человек довольно часто шерстящий софтовые порталы на тему разного рода полезных утилей для обработки текста, могу авторитетно заявить - эти сайты не нужны 99,9 проценту потенциальных юзеров, они просто там не бывают. Приведу только два сайта, куда обычно ведут ссылки из Гугла и где есть что поискать: https://www.softpedia.com и https://www.majorgeeks.com Разумеется, есть еще куча аналогичных мест, сейчас даже не вспомню. Если там программа присутствует, она будет востребована юзерам с куда большей вероятностью, нежели на узкоспециализированных. И да, название должно быть запоминающимся, сам сталкивался что софт с примелькавшимися словами из компового обихода практически невозможно найти, особенно, если времени прошло изрядно. Как встрять на указанные и не указанные мной сайты, не знаю. Наверное, начать с переименования софта.

    Всего записей: 1222 | Зарегистр. 18-08-2012 | Отправлено: 20:29 08-09-2024
    www_world

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

    Всего записей: 437 | Зарегистр. 04-11-2018 | Отправлено: 20:39 08-09-2024
    AZJIO



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

    Всего записей: 4536 | Зарегистр. 03-05-2006 | Отправлено: 21:11 08-09-2024 | Исправлено: AZJIO, 21:32 08-09-2024
    AkulaBig

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, как начальные пробелы строки заменить на табуляции, не затрагивая конечных пробелов?
    Не получается заменить каждые 4 пробела на одну табуляцию. Такое выражение:
    Что: [ ]{4}
    Чем: \t
    заменяет и конечные пробелы на табуляции.
    Такое:
    Что: ^([ ]{4})
    Чем: \t$1
    заменяет на табуляцию только первые 4 пробела.
    Такое:
    Что: ^([ ]{4})+
    Чем: \t
    заменяет на одну табуляцию все первые пробелы по 4.
    Еще кучу разных вариантов. Но смысл, что стоит поставить ^, заменяются только первые пробелы. Без ^ заменяются пробелы и в конце строки.
    Можно-ли решить эту задачу?

    Всего записей: 4823 | Зарегистр. 11-03-2003 | Отправлено: 10:38 13-09-2024 | Исправлено: AkulaBig, 10:39 13-09-2024
    U235

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

    Цитата:
    Можно-ли решить эту задачу

    Можно воспользоваться утилитой expand для этих целей.

    Код:
    $ expand -i -t 2 sample1.c > sample2.c

    Всего записей: 974 | Зарегистр. 14-12-2005 | Отправлено: 11:55 13-09-2024
    los

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

    Цитата:
    Можно воспользоваться утилитой expand для этих целей.

    исходя из условий скорее - unexpand. И то только gnu реализацию. В posix expand/unexpand нет ключа '-i'
     
    AkulaBig

    Цитата:
    Но смысл, что стоит поставить ^, заменяются только первые пробелы.

    так и должно быть, ^ - указывает на начало строки. Вам нужно заменить все пробелы на \t в начале строки или каждые 4 пробела в начале строки на \t?
    т.е. 4 пробела - \t, если 8 - \t\t и т.п.?
    Какую программу вы хотите для этого использовать?

    Всего записей: 7629 | Зарегистр. 08-09-2001 | Отправлено: 12:17 13-09-2024
    AkulaBig

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

    Цитата:
    Вам нужно заменить все пробелы на \t в начале строки или каждые 4 пробела в начале строки на \t?

    Все пробелы я легко меняю стандартными выражениями приведенными выше. ^([ ]{4})+ Понятно, что + заменит все пробелы. А надо мне именно:

    Цитата:
    каждые 4 пробела в начале строки на \t

    Вот так заменяются все пробелы в строке [ ]{4} по 4 на табуляцию. А надо только с начала строки. Если я пишу ^[ ]{4} меняются только первые 4 пробела с начала строки, а их может быть сколько угодно. Если я пишу ^([ ]{4})+. Из-за + все пробелы в начале строки меняются на одну табуляцию.

    Цитата:
    Какую программу вы хотите для этого использовать?
     

    Скрипт SearchReplace.js AkelPad. То-есть js. Соответственно никакие дополнительные программы применить не получится. В этом скрипте в качестве замены можно использовать функцию. Пример:
    // Пример опции "Заменять на функцию":
    //   Что: \d+
    //   Чем: parseInt($0) + 1;
    // или
    //   Что: \d+
    //   Чем: var n = parseInt($0); return n >= 20 ? 20 : ++n;
    Может это как-то поможет.

    Всего записей: 4823 | Зарегистр. 11-03-2003 | Отправлено: 12:27 13-09-2024 | Исправлено: AkulaBig, 12:30 13-09-2024
    los

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

    Цитата:
    То-есть js.

    варианты предложенные здесь не подходят?
    https://stackoverflow.com/questions/26255455/regex-replace-groups-of-4-spaces-from-new-line-until-a-character-with-tabs

    Всего записей: 7629 | Зарегистр. 08-09-2001 | Отправлено: 12:37 13-09-2024
    AkulaBig

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Эта статья и у меня открыта. Только вот непонятно, как функцию в замену прописать. \G у меня не работает.

    Всего записей: 4823 | Зарегистр. 11-03-2003 | Отправлено: 13:53 13-09-2024
    virjokk

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AkulaBig
    Поиск: ^[ ]+(?! $)
    Замена: \t

    Всего записей: 300 | Зарегистр. 19-05-2006 | Отправлено: 13:53 13-09-2024
    ewild

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AkulaBig
     
    "/gm" mode : "^([ ]{4}[ ]*)" > "\t"
     

    Код:
     
    // AkulaBig.js script for AkelPad
    var hMainWnd=AkelPad.GetMainWnd();
    if (hMainWnd)
    {
    nSelStart=AkelPad.GetSelStart();
    nSelEnd=AkelPad.GetSelEnd();
    if (nSelStart == nSelEnd)
    AkelPad.SetSel(0,-1);
    pSelText=AkelPad.GetSelText();
     
    pSelText=pSelText.replace(/^([ ]{4}[ ]*)/gm,"\t");  // replace 4+ initial spaces with tab
     
    AkelPad.ReplaceSel(pSelText);
    AkelPad.SetSel(nSelStart,nSelStart);
    }
     

    Всего записей: 1201 | Зарегистр. 13-08-2005 | Отправлено: 15:07 13-09-2024 | Исправлено: ewild, 15:18 13-09-2024
    AkulaBig

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

    Цитата:
    Поиск: ^[ ]+(?! $)

    Выражения с + заменяют все пробелы на одну табуляцию.
    ewild

    Цитата:
    "/gm" mode : "^([ ]{4}[ ]*)" > "\t"

    Все выражения с +, *, ? заменяют все пробелы на одну табуляцию.

    Цитата:
    // AkulaBig.js script for AkelPad

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

    Всего записей: 4823 | Зарегистр. 11-03-2003 | Отправлено: 15:42 13-09-2024 | Исправлено: AkulaBig, 16:43 13-09-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