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

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

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

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
    Celsus



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли заменить значение на свой текст, если оно отсутствует? Я пометил это место текстом !!!ВОТ ЭТО МЕСТО!!! - там подряд идут <br>
    Тут блок с тектом и ссылкой артиста отсутствует, берется название лейбла из следующего блока, который сам отсутствует, ставится перед названием лейбла этого блока, где нет артиста. Нужно этот желтый момент заменить на альтернативный текст в случае, если блок артиста будет отсутствовать.  
    https://regex101.com/r/nEfNhy/1
    https://i.postimg.cc/dtRQC7dM/2025-03-28-092419.png
    Можно было бы заменить href=" после вторых круглых скобок на <br><br>? может, получилось бы

    Всего записей: 467 | Зарегистр. 02-04-2011 | Отправлено: 07:41 28-03-2025
    Mavrikii

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Celsus
    можно. ищете это место, где идут подряд <br> и меняете на то, что вам нужно.
    да хоть /<\/a><br><br><a/ заменить на </a><br>все, что хотите<br><a
     

    Цитата:
    Можно было бы заменить href=" после вторых круглых скобок на <br><br>

    чего?

    Всего записей: 16498 | Зарегистр. 20-09-2014 | Отправлено: 07:50 28-03-2025 | Исправлено: Mavrikii, 07:51 28-03-2025
    Celsus



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

    Всего записей: 467 | Зарегистр. 02-04-2011 | Отправлено: 08:03 28-03-2025
    Mavrikii

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

    Цитата:
    Не соображу, как сделать это

    в чем используется регулярка?  
    я же написал, сначала замена, а потом уже парсите как вам хочется.

    Всего записей: 16498 | Зарегистр. 20-09-2014 | Отправлено: 08:05 28-03-2025
    bolega

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а можно ли регуляркой найти слова типа "так-так", "там-там", "ку-ку", "ну-ну" и т.д., т.е. одинаковые повторяющиеся последовательности двух, трех, n-букв, разделенных дефисом  
    Mavrikii
    Спасибо!

    Всего записей: 4737 | Зарегистр. 09-09-2002 | Отправлено: 07:51 10-04-2025 | Исправлено: bolega, 08:05 10-04-2025
    Mavrikii

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

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

    можно. зависит от того, какая нотация используется для обратных ссылок, то есть для чего регулярка
    https://regex101.com/r/HUqHkk/1
    (\w{2,})-\1
    можно добавить границы слов, чтобы не срабатывало на нука-кара
    \b(\w{2,})-\1\b

    Всего записей: 16498 | Зарегистр. 20-09-2014 | Отправлено: 07:56 10-04-2025 | Исправлено: Mavrikii, 07:57 10-04-2025
    annatut

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем доброго дня! Помогите, пожалуйста, решить такую задачу. Файл htm содержит древнегреческо-русский словарь. Заголовки обозначены тегами <h4></h4>. В словаре иногда встречаются повторяющиеся статьи. Какие регулярки можно использовать в Notepad++, чтобы убрать дубликаты?  
    Пример.
     
    <h4>&#931;&#949;&#961;&#959;&#8059;&#953;&#959;&#962;</h4>
    <p><i>лат.</i> Servilius, Servius.</p>
    <h4>&#931;&#949;&#961;&#959;&#8059;&#953;&#959;&#962;</h4>
    <p><i>лат.</i> Servilius, Servius.</p>
     
    А нужно так:
    <h4>&#931;&#949;&#961;&#959;&#8059;&#953;&#959;&#962;</h4>
    <p><i>лат.</i> Servilius, Servius.</p>
     
    И еще есть ли такие регвыры, которыми можно искать дубликаты, не идущие по порядку, а разбросанные по словарю в разных местах?
     
    Заранее благодарю!

    Всего записей: 76 | Зарегистр. 20-05-2019 | Отправлено: 15:28 18-08-2025
    ne_viens

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Заменить </h4>\r\n<p> на </h4><p>
    Отсортировать строки
    Удалить дублирующиеся строки
    При необходимости вернуть обратно </h4><p> на </h4>\r\n<p>

    Всего записей: 1581 | Зарегистр. 01-11-2004 | Отправлено: 17:15 18-08-2025
    Mavrikii

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

    Цитата:
    А нужно так:

    (<h4>.*</h4>\r?\n.*)\r?\n\1
    на
    \1

    Всего записей: 16498 | Зарегистр. 20-09-2014 | Отправлено: 19:59 18-08-2025
    www_world

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

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

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

    Всего записей: 642 | Зарегистр. 04-11-2018 | Отправлено: 20:55 18-08-2025
    annatut

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

    Всего записей: 76 | Зарегистр. 20-05-2019 | Отправлено: 21:26 18-08-2025
    Celsus



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте, нашел стрипт, который удаляет дублирующие строки
    ^(.*?)$\s+?^(?=.*^\1$)
    А есть возможность удалять группы с дублирующими строками, которые идут столбиком, одна за другой?
    Sil - Love Don't Come Easy (Radio Edit)
    Sil - Love Don't Come Easy (Radio Edit)
    Victor Ark - Coming Back (Starknights Edit)
    Victor Ark - Coming Back (Starknights Edit)
    Scotty - Endless Sky (Original Dub Edit)
    Scotty - Endless Sky (Original Dub Edit)2
    К примеру, удалить первые две группы, а треть. оставить

    Всего записей: 467 | Зарегистр. 02-04-2011 | Отправлено: 11:36 21-08-2025
    www_world

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Celsus
    Типа такого?
    ^(.*?)$\s+?^\1$\s+^(.*?)$\s+?^\2$

    Всего записей: 642 | Зарегистр. 04-11-2018 | Отправлено: 04:00 22-08-2025
    drPeps

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет! Помогите с regexp. Задача вроде банальная, но тупо загуглить искомое я не смог, а сил вкуривать всю эту шнягу нет. Короче: нужен RegExp ищущий содержимое между некоторым HTML-тегом, но БЕЗ самого тега, то есть (напр, тег тут <td>, "Захват" -- это то, что должно быть найдено):
     
    <td>Захват</td>
    <td id="someID">Захват</td>
    <td class="someClass">Захват</td>
    <td class="someClass" id="someID">Захват</td>
     
    То есть содержимое тега должно быть захвачено независимо от того, есть ли внутри тега какие-либо атрибуты (или их нет). Нагуглил только захват с тегами, но мне нужно только то, что внутри тега, без него самого! Да, забыл добавить: "осложнений" в виде переносов строк и одноименных вложенных тегов нет. То есть в данном примере подразумевается, что <td></td> находятся в одной строке и внутри них других <td></td> нет.

    Всего записей: 185 | Зарегистр. 16-12-2004 | Отправлено: 13:42 24-08-2025 | Исправлено: drPeps, 13:48 24-08-2025
    Mavrikii

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

    Цитата:
     Нагуглил только захват с тегами, но мне нужно только то, что внутри тега, без него самого!

    для этого как раз подходят группы.
    использование их зависит от того, чем пользуетесь и как дальше используете результат регулярки.
     
    ну либо (?!>)([^><]+)(?=<\/td>)

    Всего записей: 16498 | Зарегистр. 20-09-2014 | Отправлено: 19:06 24-08-2025 | Исправлено: Mavrikii, 19:06 24-08-2025
    drPeps

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

    Цитата:
    ну либо (?!>)([^><]+)(?=<\/td>)

    Да, большое спасибо, вроде то, что надо. Вообще, задача такая. Я иногда делаю таблицы в HTML с содержанием примерно так:

    Код:
    <table>
     <tr>
      <td>строка 1 : колонка 1</td>
      <td>строка 1 : колонка 2</td>
      </tr>
     <tr>
      <td>строка 2 : колонка 1</td>
      <td>строка 2 : колонка 2</td>
      </tr>
    </table>

    Неудобство для меня тут в том, что TD здесь идут по вертикали, а реально они отображаются по горизонтали. Ну то есть, например (если 3 колонки): первая строка: 1,2,3; вторая строка: 4,5,6 итд. А мне надо, чтобы заполнение шло по вертикали, т.е. первая колонка сверху вниз, потом вторая колонка итд. И я очень заколебался соображать, где какая колонка. Поэтому я решил автоматизировать процесс. Сначала заполнить руками эту таблицу по строкам, а потом EmEditor (макросом) считает данные между <td></td> в массив, переставит их там в нужном порядке, а потом еще раз пройдет по <td></td> и вставит заново в перетасованном виде.
     
    Я могу конечно наваять захват ячеек тупым способом (без RegExp) типа: ищем <td>, запоминаем позицию курсора 1, ищем </td>, запоминаем позицию курсора 2, считываем строку между позициями 1 и 2 ну итд. Но я вот решил, что с RegExp будет быстрее. Вообще, я несколько раз по жизни пытался освоить эту мутоту с RegExp, но это такая китайская грамота, что если её часто не юзать, то она быстро забывается, а мне она не особо нужна, так что я в итоге плюнул на это дело :). Проще спросить готовый совет :)

    Всего записей: 185 | Зарегистр. 16-12-2004 | Отправлено: 23:45 24-08-2025 | Исправлено: drPeps, 23:46 24-08-2025
    Vinyl_Vandal

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

    Цитата:
    Вообще, я несколько раз по жизни пытался освоить эту мутоту с RegExp, но это такая китайская грамота

    ChatGPT напишет тебе любой парсер, на любом языке
    для тех у кого проблемы с "китайским", есть Table Capture

    Всего записей: 159 | Зарегистр. 04-08-2025 | Отправлено: 00:01 25-08-2025
    www_world

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    drPeps
    Вам проще создавать в таком случае таблицы через текстовый формат csv
    строка 1|колонка 1|колонка 2|колонка 3
    строка 2|колонка 1|колонка 2|колонка 3
    строка 3|колонка 1|колонка 2|колонка 3
    ...
    Открыть полученный файл в Excel и сохранить в html (или в формате, который удобнее).
    Однако можно и регэкспами конвертировать полученный csv в html.
    в случае, если разделители полей ("|") уникальные и нигде в самих строках не встречаются
    ^([^\|]+)\|([^\|]+)\|([^\|]+)\|([^\|]+)$
    заменить на
    <tr>\r\n<td>\1</td>\r\n<td>\2</td>\r\n<td>\3</td>\r\n<td>\4</td>\r\n</tr>

    Всего записей: 642 | Зарегистр. 04-11-2018 | Отправлено: 00:25 25-08-2025 | Исправлено: www_world, 00:28 25-08-2025
    AkulaBig

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Написал для плагина Total Commander PCREsearch вот такой регэксп Non-ASCII characters для нахождения юникодных символов в именах файлов из символов ASCII:
    ^([\x00-\x7F]|[а-яё])
    Только результат выполнения этого выражения обратный. Где есть юникодные символы, говорит - нет, где нет - да. Помогите поправить выражение.

    Всего записей: 6573 | Зарегистр. 11-03-2003 | Отправлено: 04:02 29-08-2025 | Исправлено: AkulaBig, 04:03 29-08-2025
    www_world

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

    Цитата:
    ^([\x00-\x7F]|[а-яё])

    Ваш регэксп ищет (выразим это жирными словами)
    Первым символом строки должен быть любой символ с 0x00 по 0x7F из таблицы кодировок, что полностью соответствует кодировке ASCII (7-битная кодировка из 127 символов). При этом, проводится текстовый поиск (не бинарный), а поэтому не имеет значения бинарное представление символов - они могут быть в любой кодировке из списка ASCII, ANSI, UTF8, UTF16 - в принципе отображение некоторых из них ( а точнее, отображение символов, которые соответствуют управляющим символам в бинарных файлах) может зависеть от локали системы.
    или любая буква русского алфавита, при этом бинарно эти буквы могут быть в любой кодировке из списка ANSI, UTF8, UTF16.
    Жирное из двух кусков - это то, что ищет ваш регэксп.
    Поэтому пока непонятно, в чем именно задача и даже - на какую тему эта задача.
    То есть, до регэкспов еще пока очень далеко.

    Всего записей: 642 | Зарегистр. 04-11-2018 | Отправлено: 04:49 29-08-2025 | Исправлено: www_world, 04:51 29-08-2025
    Открыть новую тему     Написать ответ в эту тему

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

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru