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

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gerxer
    Я не знаю, какую программу вы используете и синтаксиса регэкспов, которые она поддерживает. Так что пеняйте сами на себя. И потом, я полагаю вы использовали последний из четырех вам предложенных - а он - не лучший, а специфический для особой задачи*, и требует наиболее широкой поддержки регекспов по сравнению с остальными тремя.
    И да, не забывайте, что \s может быть эквивалентно [ \n\r\t\f], то есть, любому из этих пяти символов, а не только пробелу или табуляции \t
    ______________________
    *последний регэксп в наборе строк
    слово  
     слово
    ?? слово
    ?? ? слово
    ? ?слово
    ??слово
      слово
    ???слово
    ??? слово
       слово
     ???слово
    найдет искомую подстроку только в строках выделенных красным, потому что он исключает из поиска подстроки со смешанным набором символов \s и \? - именно для этой цели он и написан.
    Остальные три регэкспа найдут искомые подстроки во всех строках.

    Всего записей: 1365 | Зарегистр. 17-01-2011 | Отправлено: 20:14 18-02-2020 | Исправлено: Jonmey, 21:02 18-02-2020
    YuS_2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gerxer
    уточните, что требуется в итоге - что именно удалять вначале, а что в конце строк...
    Если, вопросы и/или пробельные символы в начале строк и пробельные символы в конце, то:
    (^[\s?]*)|(\s+$)

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 20:20 18-02-2020
    gerxer

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jonmey, YuS_2,
    Да сорян, работает если в блокноте просто написать ??ABC и оттуда копировать.
    Но там где надо, а конкретно когда из Goldendict копирую он в одном из словарей захватывает непонятные знаки которые отображаются как ?? при вставке.

    Всего записей: 565 | Зарегистр. 19-06-2014 | Отправлено: 21:24 18-02-2020
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gerxer, я так понимаю вы используете обычный Notepad (виндоусовский встроенный) ?
    Попробуйте его заменить например на Notepad++.

    Всего записей: 7198 | Зарегистр. 20-03-2009 | Отправлено: 23:46 18-02-2020
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gerxer
    Вставьте скопиррованную из GD строку в шестнадцатеричный редактор и узнаете, что это за символ(ы) отображаемые как '??' Сам я этого сделать не могу, поскольку не знаю, о каком словаре речь, какая версия GD.
    После этого их можно просто добавить в регэксп.

    Всего записей: 1365 | Зарегистр. 17-01-2011 | Отправлено: 00:51 19-02-2020 | Исправлено: Jonmey, 00:56 19-02-2020
    gerxer

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jonmey
    В EditPadPro, выбрал кодировку Unicode, UTF-16, вставил текст, но тогда знаки вопроса пропадают.

    Всего записей: 565 | Зарегистр. 19-06-2014 | Отправлено: 05:02 19-02-2020
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gerxer
    Вам ранее говорил, что нужно использовать оптимальные инструменты, а не те, что больше нравятся, модные или "все их используют".
    Ctrl-H просмотр в шестнадцатеричном виде в этом редакторе. Сможете узнать код любого непонятного символа (необходимо когда нужно удалить или заменить подобные символы).
    В качестве регэкспа можете попробовать такой
    ^([\x00-\x20]+)|\s+$

    Всего записей: 1365 | Зарегистр. 17-01-2011 | Отправлено: 08:03 19-02-2020 | Исправлено: Jonmey, 08:36 19-02-2020
    Zerooo



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

    Всего записей: 94 | Зарегистр. 18-07-2003 | Отправлено: 09:20 19-02-2020
    gerxer

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jonmey
    Пишет 3F3F6465756B2D ‌‌??deuk-

    Всего записей: 565 | Зарегистр. 19-06-2014 | Отправлено: 13:51 19-02-2020
    Jonmey

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

    Цитата:
    Пишет 3F3F6465756B2D ‌‌??deuk-
    Кто пишет? Куда пишет? Зачем и почему он это делает?
     
    Данные, которые вы копируете из GD нужно напрямую вставлять в шестнадцатеричный редактор (напр., в WinHex; сочетание Shift-Ins), без промежуточных копипаст в другие редакторы, которые превращают неизвестные/неинтерпретируемые ими символы в знаки обычного вопроса (3Fh) и вернуть им первоначальное значение уже невозможно. Тогда как ваша программа для работы с буфером обмена оперируетс сырыми (неизмененными любыми посредниками) бинарными данными. Чтобы написать корректный регэксп для этой программы нужно посмотреть именно на эти сырые (raw) данные, для чего и нужен шестнадцатеричный редактор.

    Всего записей: 1365 | Зарегистр. 17-01-2011 | Отправлено: 19:18 19-02-2020 | Исправлено: Jonmey, 19:36 19-02-2020
    Death_INN

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как удалить строки с комментариями (начинаются с ;), чтобы не оставалось пустой строки?

    Всего записей: 3489 | Зарегистр. 24-10-2002 | Отправлено: 12:23 22-02-2020
    YuS_2



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

    Цитата:
    чтобы не оставалось пустой строки?

    Пустой строки? Или строк? Или о чем речь?

    Код:
    ^;[^\n]*([\r\n]{1,2}|\Z)

    или:

    Код:
    ^;[^\r\n]*([\r\n]{1,2}|$)

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:11 22-02-2020 | Исправлено: YuS_2, 14:14 22-02-2020
    Death_INN

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

    Всего записей: 3489 | Зарегистр. 24-10-2002 | Отправлено: 19:05 22-02-2020
    Aleksandr N

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемые здешние жители. :)
    Вынужден вернуться к поднятому почти год назад вопросу, который вовремя не закончил.
    Есть HTML страница в которой нужно искать определённый текст. В странице содержится много строк примерно одинакового содержания:

    Код:
     
    <tr style="display:none"><td class=drug><a href=doc_1.htm><b class=b>Иванов</b> (12345)</a></td><td class=firm><a href=11.htm><b>Текст</b></a></td></tr>
    <tr style="display:none"><td class=drug><a href=doc_2.htm><b>Ливанов</b></a></td><td class=firm>&nbsp;</td></tr>
    <tr style="display:none"><td class=drug><a href=doc_3.htm><b class=b>Петров<SUP>&reg;</SUP></b> (12345<SUP>&reg;</SUP>)</a></td><td class=firm colspan=2><i></i> <a href=33.htm>Текст</a></td></tr>
    <tr style="display:none"><td class=drug><a href=doc_4.htm>Сидоров</a></td><td class=firm colspan=2>Текст</td></tr>
     

    Текст для поиска находится между:

    Код:
     
    <tr style="display:none"><td class=drug><a href=doc_1.htm><b class=b>
     

    и

    Код:
     
    </a></td><td class=firm><a href=11.htm><b>Текст</b></a></td></tr>
     

    Если текст полностью или частично найден, то заменять в первой части:

    Код:
     
    <tr style="display:none">
     

    на

    Код:
     
    <tr style="display:block">
     

    Ранее мне подсказали выражение:

    Код:
     
    <tr style="display:none">(?=<td\b(?:(?!</?td|и).)*и)
     

    Но тут где-то что-то не так записано, это видно если искать цифры, то при этом выражении текст ищется и в строке "doc_1.htm" что не нужно.
    Прошу знающих людей подправить имеющиеся выражение для правильного поиска.
    Для упрощения задачи поясню, использую это для задач програмирования на Паскаль, поэтому сделал пример для тестов. Пример основан с использованием библиотеки "Perl-Compatible Regular Expressions". https://cloclo24.cldmail.ru/ML8iWJZdNnP34f12g69/G/3phr/4W3wvBvnR/Project1.zip?key=d8d8c01aaaf84ed81f12a83ca7c76fbf90f31bfc
    Это задача №1. Далее будет №2
    Спасибо.

    Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 12:35 28-02-2020 | Исправлено: Aleksandr N, 12:35 28-02-2020
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Aleksandr N написал(а)
    Цитата:
    Если текст полностью или частично найден,

    можете пояснить выделенную часть?

    Всего записей: 7198 | Зарегистр. 20-03-2009 | Отправлено: 22:07 28-02-2020
    Aleksandr N

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    regist123
    Можно искать например "иван", или "о". Хотя наверное по сути полностью или частично всё равно, всё зависит от искомой строки.

    Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 22:18 28-02-2020
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Aleksandr N, вроде работает ваша регулярка и с цифрами https://i111.fastpic.ru/big/2020/0229/52/08e9f358d576749c678bcde8a9592252.png
    Или тогда приведите конкретный пример, где она не работает.

    Всего записей: 7198 | Зарегистр. 20-03-2009 | Отправлено: 00:31 29-02-2020 | Исправлено: regist123, 00:45 29-02-2020
    EmBroidery

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    коллеги, подскажите пожалуйста, как в RegexBuddy можно отключить global mode (флаг g) для JavaScript?

    Всего записей: 20 | Зарегистр. 31-03-2010 | Отправлено: 07:31 29-02-2020
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    EmBroidery
    Закладка Use - список Function
    Это?

    Всего записей: 1365 | Зарегистр. 17-01-2011 | Отправлено: 08:28 29-02-2020
    Aleksandr N

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    regist123
    В том-то и дело что не работает. Это видно по второй строке и если искать "2", тоесть вторая строка находится, хотя не должна. Проводить эксперименты лучше на моём экзешнике. Я не знаю как работают другие программы, но как сказал RAD Studio использует всем известную библиотеку "Perl-Compatible Regular Expressions". Ну вот не работает правильно. На Notepad++ кстати тоже не работает.

    Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 12:39 29-02-2020
    Открыть новую тему     Написать ответ в эту тему

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