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

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

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

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

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


    Всего записей: 4623 | Зарегистр. 08-09-2001 | Отправлено: 11:50 01-10-2019
    gerxer

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los
    Да пожалуйста https://wdho.ru/8RxE
    Только надо чтобы он еще все строки ниже строки начинающейся с заглавной буквы, которые начитаются с табуляции, до следующей строки которая не начинается с табуляции, тоже удалил.  
    У меня как бы вот так http://prntscr.com/pd9s88

    Всего записей: 551 | Зарегистр. 19-06-2014 | Отправлено: 12:06 01-10-2019 | Исправлено: gerxer, 12:08 01-10-2019
    los

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

    Цитата:
    У меня как бы вот так http://prntscr.com/pd9s88

    пример был дан для программы grep
    для вашей, видимо, нужно было использовать только  сам '^[[:upper:]]' , правда, в этом примере удаляются только строки начинающиеся с заглавной буквы.
     

    Всего записей: 4623 | Зарегистр. 08-09-2001 | Отправлено: 12:17 01-10-2019
    gerxer

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    los
    Удаляет только первые буквы заглавные.

    Всего записей: 551 | Зарегистр. 19-06-2014 | Отправлено: 12:30 01-10-2019
    los

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

    Всего записей: 4623 | Зарегистр. 08-09-2001 | Отправлено: 12:42 01-10-2019
    gerxer

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jonmey
    Работает, только надо было табуляцию убрать ^[A-ZА-Я][^\n\r]*\r\n
    Теперь надо чтобы строки ниже на tab которые начинаются удалил.

    Всего записей: 551 | Зарегистр. 19-06-2014 | Отправлено: 13:19 01-10-2019
    Jonmey

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

    Цитата:
    Работает, только надо было табуляцию убрать ^[A-ZА-Я][^\n\r]*\r\n  

    Значит вы как всегда что-то делаете не так, приблизительно, "на глазок". А регэкспы такого не прощают. Ибо выражение
    [\t ]* ищет возможные табуляции и пробелы (!!!), перед заглавной буквой и их наличие не является обязательным, то есть работоспособность всего регэкспа
    ^[\t ]*[A-ZА-Я][^\n\r]*\r\n  
    не может зависеть от этой его части (ее наличия или отсутствия), удаление которой вам якобы помогло. Что легко видеть на скрине:


    Цитата:
    Теперь надо чтобы строки ниже на tab которые начинаются удалил.  

    И теперь, если хотите дальнейшей помощи, немедленно прекращайте тянуть кота/бегемота за хвост, выдавая по частям свою некую "сверхзадачу", как вам кажется, облегчая задачу помощникам. На самом деле вы делаете ровным счетом наоборот (абсолютного большинства остальных страждущих помощи это касается в равной степени).
    В подавляющем большинстве случаев времени и усилий на решение полностью и подробно изложенной "сверхзадачки" требуется в разы меньше, чем на решение ее же, когда эту "сверхзадачку" показывают  кусками, словно уголки картины из под стола.

    Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 19:30 01-10-2019
    gerxer

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jonmey
    ^[\t ]*[A-ZА-Я][^\n\r]*\r\n  
    Тут работает https://wdho.ru/8RxE, тут не работает https://wdho.ru/4Fue
     
    Задача убрать все названия, имена, аббревиатуры и тп из словарей.
    А из MW еще и такие строки(все кроме под номером один):
    [c darkslategray]II. [/c]export06.wav [com]\\ˈek-ˌspɒːrt\\[/com]
    [com]noun[/com]

    [c darkslategray]III. [/c]export06.wav [com]\\ˈek-ˌ\\[/com]
    [com]adjective[/com]

     

    Цитата:
    На самом деле вы делаете ровным счетом наоборот (абсолютного большинства остальных страждущих помощи это касается в равной степени).

    Я пытаюсь просто пытаюсь еще хоть что то понять из этих выражений регулярных, но нехрена не понимаю. Книжки скачал, но они дурацкие.  
    Даже тут: ^[\t ]*[A-ZА-Я][^\n\r]*\r\n
     
    *    Соответствует предыдущему элементу ноль или более раз.
    \n    Соответствует знаку новой строки
    \r    Соответствует знаку возврата каретки(\r не эквивалентен знаку начала новой строки, \n.)
     
    Каким боком так получается что оно строки начинает удалять?)

    Всего записей: 551 | Зарегистр. 19-06-2014 | Отправлено: 21:05 01-10-2019 | Исправлено: gerxer, 21:06 01-10-2019
    Jonmey

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

    Цитата:
    Тут работает https://wdho.ru/8RxE, тут не работает https://wdho.ru/4Fue

    Потому что я вам выше сказал довольно понятно:

    Цитата:
    (поиск должен быть регистрозависимым: для DOS/Windows окончаний строк)
    а потом добавил
    Цитата:
    вы как всегда что-то делаете не так, приблизительно, "на глазок". А регэкспы такого не прощают.

    но на вас это не подействовало, потому что вы пытаетесь "универсиализировать" регэксп на все случаи жизни нисколько не заботясь о том, чтобы создать одинаковые первичные условия для их применения. А к таковым относятся многие вещи, например, кодировки обрабатываемых файлов, формат окончаний строк (а их три - DOS. NIX, MAC) и др.
    В данном случае первый файл у вас имеет DOS окончания строк и соответствует условиям для которых он написан. А во втором случае файл имеет NIX окончания строк и соответственно регэксп не работает (и не должен).
    Приведите наконец все свои словари к однообразному представлению (поскольку вы на винде, то - к формату DOS) и будет вам счастье.

    Цитата:
    Задача убрать все названия, имена, аббревиатуры и тп из словарей.

    Мне это ничего не говорит, поскольку dsl словарями интересовался лет 15 назад и к настоящему моменту абсолютно ничего не помню. Записывайте в общем виде.
    [hhh]kkkk[/jhh] - аббревиатуры
    и тд.

    Цитата:
    А из MW еще и такие строки(все кроме под номером один):  
    [c] darkslategray]II. [/c]export06.wav [com]\\ˈek-ˌspɒːrt\\[/com]  
    [com]noun[/com]
     
    [c darkslategray]III. [/c]export06.wav [com]\\ˈek-ˌ\\[/com]  
    [com]adjective[/com]

    Эти две строки удалить или что, Общий вид строк требуется (потому что непонятно, что может меняться, а что нет).

    Цитата:
    Я пытаюсь просто пытаюсь еще хоть что то понять из этих выражений регулярных, но нехрена не понимаю. Книжки скачал, но они дурацкие.  
    Даже тут: ^[\t ]*[A-ZА-Я][^\n\r]*\r\n  

    Они не дурацкие, а самые примитивные. Специально пишу такие, чтобы было проще понять и изменять.
    Данное выражение означает (словами):
    ищем строки начинающиеся (^) возможно, но необязательно (*) с пробелов ( ) и/или табуляций (\t) в любом количестве и в любых сочетаниях ([\t ]*), после чего должна следовать одна из заглавных букв русского или английского языков ([A-ZА-Я]), после которой могут следовать, но необязательно (* - 0 или более совпадений) любые символы кроме (^) символов перевода каретки 0A и 0D (\n и \r) - кусок [^\n\r]* - и при этом вся строка имеет DOS окончание строки - \r\n
    Что тут непонятного?

    Цитата:
    Каким боком так получается что оно строки начинает удалять?)

    Регэкспы ничего не удяляют сами по себе.
    Регэкспы - это средства поиска, выбора, селекции, отбора, выявления, определения и т.д.
    Удаляет/заменяет/извлекает/вставляет/и проч. - всегда юзер, когда выбирает, что с найденным регэкспом нужно делать.

    Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 22:01 01-10-2019 | Исправлено: Jonmey, 22:08 01-10-2019
    gerxer

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

    Цитата:
    Цитата:
    Задача убрать все названия, имена, аббревиатуры и тп из словарей.
     
    Мне это ничего не говорит, поскольку dsl словарями интересовался лет 15 назад и к настоящему моменту абсолютно ничего не помню. Записывайте в общем виде.  
    [hhh]kkkk[/jhh] - аббревиатуры  
    и тд.

     
    Я имел в виду что нужно удалить все строки которые начинаются c заглавной буквы - название статьи(это аббревиатуры, имена, названия и тп). И то что находится под ними - содержание статьи.
    http://prntscr.com/pdkfhv

    Всего записей: 551 | Зарегистр. 19-06-2014 | Отправлено: 23:45 01-10-2019
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    gerxer
    Я вам уже сказал, что так помощи не ищут, поскольку вы сами не хотите прилагать даже малейших усилий, чтобы формализовать и четко сформулировать свою хотелку. Помощники должны изучать синтаксис, теги и проч. dsl словарей, чтобы представить вам готовое решение вашей хотелки. Например, что делать со строками типа
    Ab
     [s]ab000002.wav[/s] [s]ab000003.wav[/s] [s]ab000004.wav[/s] [com]\\ˈɑːb, ˈɑːv, ˈɒːv\\[/com] [i][c][com]noun[/com][/c][/i]
    bhp
     [i][c][com]abbreviation[/com][/c][/i]
    Bra{·}zil nut
     [s]brazil01.wav[/s] [com]\\brə-ˈzɪl-\\[/com][i][c][com]noun[/com][/c][/i]
    из ваших слов не ясно. Какими словами называются
    Цитата:
     названия, имена, аббревиатуры и тп
    я не знаю
    Какими бывают статьи - многострочные или однострочные мне тоже не известно.
    ...
    и после этого вы хотите универсальное решение на все случаи жизни.
    Вот вам пример на случай однострочных аббревиатур (одна строка после строки названием аббревиатуры
    ^\p{L}[^\n\r]*[\n\r]+^(?=.*?\](\babbreviation\b)\[)((?!\n\r).)*$[\r\n]+
     
     

    Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 00:53 02-10-2019 | Исправлено: Jonmey, 01:17 02-10-2019
    gerxer

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

    Цитата:
    Например, что делать со строками типа  
    Ab  
     ab000002.wav ab000003.wav ab000004.wav [com]\\ˈɑːb, ˈɑːv, ˈɒːv\\[/com]
    [com]noun[/com]
     
    bhp  
     
    [com]abbreviation[/com]
     
    из ваших слов не ясно.  
    Какими словами называются  

    Да никак они не называют, они все с Большой буквы пишутся) Удалять все нафиг.
     

    Цитата:
    я тоже не знаю  
    Какими бывают статьи - многострочные или однострочные мне тоже не известно.  
    ...  

    Бывают конечно многострочные. Я бы сразу тогда написал удалить строку одну чтобы упростить задачу.
     
    Поэтому я и писал что ориентиром может быть - строка начинается с Большой буквы, дальше под ней несколько строк которые начинаются с пробела в одном словаре(или в другом словаре с табуляции). Это все нужно удалить, закончив перед первой встретившейся строкой которая не начинается с пробела(или табуляции).
     
     
     
     
    Добавлено:

    Цитата:
    поскольку вы сами не хотите прилогать даже малейших услилий

    Я прилагаю, это например поудалял уже сам с помощью прошлого вашего кода который зарабоал каконец после того как окончания строк поменял.
    [c darkslategray]II. [/c]export06.wav [com]\\ˈek-ˌspɒːrt\\[/com]
    [com]noun[/com]
     
    [c darkslategray]III. [/c]export06.wav [com]\\ˈek-ˌ\\[/com]
    [com]adjective[/com]
     

    Всего записей: 551 | Зарегистр. 19-06-2014 | Отправлено: 01:13 02-10-2019 | Исправлено: gerxer, 01:15 02-10-2019
    Jonmey

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

    Цитата:
    Да никак они не называют, они все с Большой буквы пишутся) Удалять все нафиг.  

    А вы заметили что второй пример не имеет вообще заглавных букв?
    Цитата:
    Бывают конечно многострочные.

    Ну так общий вид их приведите.
    Цитата:
    Поэтому я и писал что ориентиром может быть - строка начинается с Большой буквы

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

    Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 01:20 02-10-2019 | Исправлено: Jonmey, 01:38 02-10-2019
    gerxer

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

    Цитата:
    Выше я вам привел пример аббревиатуры с маленькими буквами.

    С маленькими буквами у меня нет идей даже умозрительных как бороться. Пусть остаются.

    Всего записей: 551 | Зарегистр. 19-06-2014 | Отправлено: 01:45 02-10-2019
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    gerxer
    https://wdho.ru/4Fv1
    Удалил все карточки, в которых есть ]abbreviation[
    Может лишнее удалил, но как вы объясняли, так и удалил.

    Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 02:50 02-10-2019
    gerxer

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Jonmey
    Все забудьте слово аббревиатура) У других строк таких ключевых фраз нет на которые можно ориентировать.
     
    ^Большая Буква удаляем эту строку(Строка №1)
    строка ниже начинается с пробела(Табуляции) - удаляем строку
    ещё одна строка ниже начинается с пробела - удаляем
    И так до строки под Строкой №1, которая не начинается с пробела(табуляции)

    Всего записей: 551 | Зарегистр. 19-06-2014 | Отправлено: 08:37 02-10-2019
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    gerxer
    https://wdho.ru/4Fw1
    карточек начинающихся с заглавной буквы нет

    Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 10:14 02-10-2019
    Alex_Piggy

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброе время, gerxer
    На чистых регекспах это сложно и неудобно. Может лучше обработка на известном Вам языке + регексп?
    Пример на awk Подробнее...

    Всего записей: 1846 | Зарегистр. 07-08-2002 | Отправлено: 10:42 02-10-2019 | Исправлено: Alex_Piggy, 10:42 02-10-2019
    gerxer

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alex_Piggy
    Не, я такое вообще не знаю)
     
    Jonmey
    Так вы мне код дайте плз.  
     

    Всего записей: 551 | Зарегистр. 19-06-2014 | Отправлено: 10:49 02-10-2019
    Jonmey

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    gerxer
    ^\p{lu}[^\n\r]*[\r\n]+([\t\[ ]+[^\n\r]*\][\r\n]+)*

    Всего записей: 1173 | Зарегистр. 17-01-2011 | Отправлено: 10:54 02-10-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

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


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru