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

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

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    regist123,
    в любом случае заставили еще раз посмотреть на использовавшиеся конструкции и тем самым помогли найти решение.

    Всего записей: 7750 | Зарегистр. 08-09-2001 | Отправлено: 20:31 24-01-2020
    Jonmey

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

    Цитата:
    Предположу, что это не то что изначально хотели.

    Нет, именно этого я и хотел. Согласно примеру.
    Задающий вопрос не говорил, что </p> скачет по строкам.
    Единственное уточнение - возможное наличие \s символов перед </p> вначале строки:
    (?<=[\n\r])[^\n\r]*$(?=\s*</p>)
     
    Кстати ваш вариант

    Цитата:
    .*\r\n(?=(\s|\t)*</p>)  

     у меня не работет от слова совсем:

     

    Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 09:52 25-01-2020
    los

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

    Цитата:
    у меня не работет от слова совсем:  

    у меня тоже.

    Цитата:
    Единственное уточнение - возможное наличие \s символов перед </p> вначале строки:  

    у меня не работает в отличие от вашего старого. Видимо, как и в некоторых других случаях это зависит программы обработки/использования/проверки.

    Всего записей: 7750 | Зарегистр. 08-09-2001 | Отправлено: 10:38 25-01-2020
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jonmey написал(а)
    Цитата:
    Нет, именно этого я и хотел. Согласно примеру.  
     Задающий вопрос не говорил, что </p> скачет по строкам.

    В изначальном запросе говорится qw12 написал(а)
    Цитата:
    предпоследняя строка, которую надо найти

    А находит кусок последней строки (просто без тега </p>), что явно противоречит указанному условию. Но не исключаю, что задающего такой вариант работы тоже устроит.
    los написал(а)
    Цитата:
    Видимо, как и в некоторых других случаях это зависит программы обработки/использования/проверки.

    Поэтому и добавил тут внизу оговорку PS. ибо qw12 не уточнил с учётом какого синтаксиса ему надо.
    + вот демонстрация https://i111.fastpic.ru/big/2020/0125/1d/7ddd3c13c94574917d4f2234b5b0a21d.png

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

    Всего записей: 7198 | Зарегистр. 20-03-2009 | Отправлено: 11:39 25-01-2020 | Исправлено: regist123, 11:44 25-01-2020
    los

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

    Цитата:
    А находит кусок последней строки (просто без тега </p>), что явно противоречит указанному условию.  




    Всего записей: 7750 | Зарегистр. 08-09-2001 | Отправлено: 12:27 25-01-2020
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    regist123Я ориентировался на пример и предпоследняя строка в нем соответствует описанию (предпоследняя строка = первая строка перед тегом конца абзаца </p>). Под нее и предложил решение. Если задавшего вопрос что-то не устраивает - он сообщит об этом. Тем более он не сообщил ряд другим могущих быть важными деталями, например, наличие (в том числе, эпизодическое) любых непечатных знаков перед и после строки (захватывать ли их или, наоборот, их нужно априори обрезать). Подобные детали, тоже могут быть учтены, в одном и том же регэкспе.
     
    los
    Цитата:
    у меня не работает в отличие от вашего старого. Видимо, как и в некоторых других случаях это зависит программы обработки/использования/проверки.
    Несомненно. Я всегда ориентируюсь на синтаксис powergrep5 (4). Хотя в данном случае, все стандартно и добавлен лишь оператор конца строки ($), что не может быть принципиально (если редактор поддерживает операторы начала и конца строк).

    Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 16:10 25-01-2020 | Исправлено: Jonmey, 16:31 25-01-2020
    los

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

    Код:
    ((?<=\.(A|B)c\s).*)

    в строке
    .Bc test test1
    выделяется все после ".Bc ", есть ли другой вариант, чтобы обойтись без "?"

    Всего записей: 7750 | Зарегистр. 08-09-2001 | Отправлено: 22:03 25-01-2020
    Jonmey

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

    Цитата:
    javascript  с такой конструкцией  

    js не поддерживает контекстные операторы типа "иду вперед - смотрю взад"
    Только операторы "куда иду - туда смотрю"

    Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 02:21 26-01-2020 | Исправлено: Jonmey, 02:24 26-01-2020
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jonmey,
    т.е. получить результат где выделялись бы "test test1" после ".Bc " не получится?

    Всего записей: 7750 | Зарегистр. 08-09-2001 | Отправлено: 10:46 26-01-2020
    Jonmey

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

    Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 22:38 26-01-2020
    data man



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los
    quickjs поддерживает ecma-262 Assertion
    Для Windows собирать не пробовал.

    ----------
    Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
    Кекс. Антибиотики. Ламбада.

    Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 23:06 26-01-2020
    los

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jonmey
    https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/RegExp
    data man.
    про quickjs я знаю, у меня другой случай - программа использует
    https://ace.c9.io/#nav=higlighter

    Всего записей: 7750 | Зарегистр. 08-09-2001 | Отправлено: 09:35 27-01-2020
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los
    К чему вы мне даете ссылку?
    Мне она не нужна от слова совсем.

    Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 10:43 27-01-2020
    los

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

    Цитата:
    К чему вы мне даете ссылку?  

    к тому что по ней, конструкция "(?<=y)x" должна работать.

    Цитата:
    Мне она не нужна от слова совсем.

    это вам решать.

    Всего записей: 7750 | Зарегистр. 08-09-2001 | Отправлено: 11:22 27-01-2020
    Jonmey

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

    Цитата:
    к тому что по ней, конструкция "(?<=y)x" должна работать.
     

    Вам виднее. Тем более я говорил о jscript, а не о java script. Например, в движке js Opera подобные конструкции работоспособны. Но не референсном jscript от MS.
    На каком именно движке работает ваш редактор - мне неизвестно, да и все равно. Хотя решать проблему нужно начинать именно с этого, а не искать сторонние тулзы, на которых работает, то что хочется и доказывать этим, что и другом случае это "должно работать".

    Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 11:49 27-01-2020 | Исправлено: Jonmey, 02:48 30-01-2020
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите пож. Есть список типа
    {{categ|Бук|lang=ru}}
    надо привести к виду
    {{Категория|язык=ru|Бук}}
    код языка может быть и два-три символа и более, а вместо Бук — перечисление, до 6 секций через | т.е. Бук|Патык|Башлык|прочее…
     
     

    Всего записей: 1329 | Зарегистр. 27-11-2008 | Отправлено: 13:38 04-02-2020
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sikemo написал(а)
    Цитата:
    categ

    Вместо categ там тоже что-то другое меняющееся будет написано? И это обязательно делать через регулярку? Имхо, просто другими способами это было бы намного проще, даже к примеру просто через cmd.
     
    Добавлено:
    Вроде работает, попробуйте найти

    Код:
    (\{\{categ(.*))(?<=\{\{categ)(.*)(?=\|lang=(\w{2,3})\}\})\|lang=(\w{2,3})\}\}

    заменить на

    Код:
    {{катег|язык=$4$3}}

    https://i111.fastpic.ru/big/2020/0204/f8/9406ce10d3554dc00d817d68ef853df8.png

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

    Всего записей: 7198 | Зарегистр. 20-03-2009 | Отправлено: 17:13 04-02-2020
    los

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

    Цитата:
    На каком именно движке работает ваш редактор - мне неизвестно, да и все равно.  

    выше указано, но раз все равно - не смотрите.

    Цитата:
    Хотя решать проблему нужно начинать именно с этого, а не искать сторонние тулзы, на которых работает, то что хочется и доказывать этим, что и другом случае это "должно работать".

    менторский тон можно было бы и сменить - не красит.

    Всего записей: 7750 | Зарегистр. 08-09-2001 | Отправлено: 18:44 04-02-2020
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sikemo
    Можно так:
    (\{\{)[^|\s]+((\|[^|\s]+(?=\|)){1,6})\|lang=([^|\s]+)(\}\})
    заменить на
    $1Категория|язык=$4$2$5
    Прим. необходимость экранирования ряда символов при перечислении определяется используемым движком регэкспов. В используемым мною - нет такой необходимости. Однако, в других случаях это может потребоваться. например
    (\{\{)[^\|\s]+((\|[^\|\s]+(?=\|)){1,6})\|lang=([^\|\s]+)(\}\})

    Всего записей: 1377 | Зарегистр. 17-01-2011 | Отправлено: 22:05 04-02-2020
    sikemo

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

    Цитата:
    И это обязательно делать через регулярку

     
    думал (что это самое легкое), и писал  по-своему, но не получилось, поэтому решил посоветоваться. А так изменяю либо в викисреде (Википеди, словарь,  &edit режим поиска и замены (работают также рег. выр.), версии не знаю.  Могу также в Akelpad ваше не сработало,  сработало от  Jonmey. Когда вписал типа
     
    {{categ|Бук|Веди|Колеси и мечтыlang=be}}  
    {{categ|Бук|Веди|Колеси и мечты|lang=bg}}  
    {{categ|Бук|Веди|Колеси и мечты|lang=zh-min}}  
     
    Попробовал в Akel, Emeditor и Викисловаре. Последний — ничего,  
    Первое — ваше, втрое — Jonmey.Первое не сработало нигде, не знаю почему, хотя раньше на том же rexelr offline когда-то тестил свои регулярки.  
    Второе — работает в Akel'е и срабатывает для приведённого  {{categ|Бук|Веди|Колеси и мечты|lang=bg}}  лишь раз в EmEditor
     
    потом посмотрю ваши регулярки глубже, отмечу лишь еще, что код языка там не 2-3 символа, а моежт быть и simple, zh-min-nan, be-x-old. Касательно меняющегося — это только перечисление (вот, добавил слово с пробелами, «уплыло» ) и код языка.
     
    а в cmd режиме оно сработает только с фалом или можно из буфера и в файл? Учтите, что может быть юникод
     
    И спасибо
     
     

    Всего записей: 1329 | Зарегистр. 27-11-2008 | Отправлено: 19:55 05-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