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

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

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

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
    Dronton2

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

    Цитата:
    Есть документ в котором полно разного текста между обыкновенными круглыми скобками во всем документе.
    Подразумевается ли под "полно разного текста" многоуровневое вложение скобок, а также что-то типа закавыченных строк, в которых скобки не считаются скобками?
    Выложили бы вы здесь коротенькую вырезку из вашего примера, а то качать 16 МБ ради посмотреть - никому не хочется.

    Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 11:05 24-01-2018
    mirvery

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Не помогло. Удалилось и содержимое скобок и то, что между скобками, т.е. между ) и следующей открывающей (.
     

    Всего записей: 21 | Зарегистр. 26-12-2017 | Отправлено: 12:08 24-01-2018 | Исправлено: mirvery, 12:20 24-01-2018
    VVL99

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mirvery
    Опять же не видел вашего текста, но вот с этим примером:

    Код:
    текст1из6 ((коммент1) текст2из6 (коммент2)) текст3из6
    (коммент3 ) текст4из6 ( коммент4)
    текст5из6 ((коммент5) (коммент6)) текст6из6

     Получилось так:

    Код:
    текст1из6 текст2из6 текст3из6
    текст4из6  
    текст5из6 текст6из6
    Вроде всё корректно

    Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 16:16 24-01-2018 | Исправлено: VVL99, 16:17 24-01-2018
    YuS_2



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

    Цитата:
    Не помогло.

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

    Код:
    \([^\(\)]+\)

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

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 16:59 24-01-2018
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    вот я себе накатал для удаления лит-ры в [ скобках типа [1, 3] и скобок (если так какой-то текст), но на автомате проганять не надо, ибо удалит много лишнего
     
    \s?\[.+?\]|\(.+\)    //прибирає посилання на літ-ру у дужках (), []
    это для приведения текста для гугл-читалки, чтоб не читала лишнюю белиберду. все индивидуально. А так текст  выкладывайте, фрагмент пока скачивать не будем

    Всего записей: 1326 | Зарегистр. 27-11-2008 | Отправлено: 19:12 24-01-2018
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mirvery 13:08 24-01-2018
    Цитата:
    Не помогло. Удалилось и содержимое скобок и то, что между скобками, т.е. между ) и следующей открывающей (.

    1) Вы бы лучше писали какую/какие регулярки вы пробовали. Тут несколько разных вариантов дали и они немного отличаются.
    2) Ответили бы на вопросы, которые вам задали. В частности Dronton2 12:05 24-01-2018
    Цитата:
    Подразумевается ли под "полно разного текста" многоуровневое вложение скобок, а также что-то типа закавыченных строк, в которых скобки не считаются скобками?

    И дополню вопросом, который уже задавал на предыдущей странице. В случае многоуровневых скобок надо удалять скобки любого уровня вложенности или только самые внутренние?
     
    И по документу, я его скачал, а не открывался он из-за того, что это оказывается переименованный .docx
    Вот текст с первой страницы (там 1348 страниц, всё просто для примера )
    ps/ движок форума искажает юникод. Пришлось море заменить на ссылку.

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

    Всего записей: 7189 | Зарегистр. 20-03-2009 | Отправлено: 21:08 24-01-2018 | Исправлено: regist123, 21:11 24-01-2018
    mirvery

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

    Цитата:
    µgreifen2I.S.V. zulangen /hinlangen /langen nachlangenB75  (Ik „lang“ mit de rechte Hand no de Schēēr.BUR03.052 – Dō lang de annere no sien Bēērglas.BUR04.076 – Mâren*„lang“ no ėn annern Linnenbolten un wickel ėm af.FEJ5.3.162); tōlangen  (Inf:BEI TISCH: Hē schull blōōt „tolangn“!GRK5.2.263 – Prs:UNBESCHEIDEN:Hē langt ümmer no dėn dicksten Ėnn. – Prt:GESCHICKT ZUGREIFEN: Sē lang tō|„lang to“ un hârr ėm, dėn Tähn.LAF17.058) hinter sich greifenachter sik langen (Sē langt achter sik, grippt no de Handtasch.BUR08.14) I.S.V. ergreifen /in die Hand nehmengriepenB32 (Wėnn du ėn Lünsch mit’e Hand griepen wullt, muttst du;m Solt op’n St;rt streuen!); snappenB91 (Prt:Wi „snappen“sik|unsX07a ėn ōlen Sack.MAG8.039)èLuftWG.snappenèArm2WG.GriepârmèSpatzWG.Lünschèfassen1 (ergreifen) WG.packen, tō foten kriegen|footkriegen,…èzulangen (BEIM ESSEN; Chance wahrnehmen)ènötigen (BEIM ESSEN)èzugreifen2 (gierig nach etw. greifen)ènehmen2 (nach etw. greifen) WG.herkriegen, herlangenèschnappen

     
    Нужно удалить весть текст в скобках и сами эти скобки, т.е. текст вместе со скобками. И так - во всем документе.  
     
    Вот выложил txt-файл - http://rgho.st/private/7C44B5MYf/cc5cbefe97891725b9cfb88e32646428
     
    Я в регулярках вообще ничего не поимаю.
     
    Мне для создания словаря для Lingvo нужны будут только некоторые регулярки.  
     
    Например, удаление разного текста между двумя определенными символами во всем тексте; добавление в начало и конец каждой строки определенного содержимого (тэгов); перенос содержимого строки на новую после первого слова в каждой строке (слово остается, а перевод - т.е. вся последующая часть строки) должна перенестись ниже с отступом от края строки в 3 пробела, скажем.
     
     
     

    Всего записей: 21 | Зарегистр. 26-12-2017 | Отправлено: 16:11 29-01-2018 | Исправлено: mirvery, 16:23 29-01-2018
    YuS_2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mirvery
    Вы, наверное, думаете, что если задать вопрос несколько раз, то получите какой-то другой ответ?
     

    Цитата:
    Нужно удалить весть текст в скобках и сами эти скобки, т.е. текст вместе со скобками.

    Поднимите вверх по топику глаза, там есть доп. уточнения... попытайтесь на них ответить или воспользуйтесь тем, что уже предложено:
     24-01-2018

    Цитата:
    Или запускайте регэксп столько раз, сколько есть уровней вложения:

    Код:
    \([^\(\)]+\)

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

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 16:25 29-01-2018
    Dronton2

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

    Цитата:
    Я в регулярках вообще ничего не поимаю.  
     
    Мне для создания словаря для Lingvo нужны будут только некоторые регулярки.
    Если вы в регулярках ничего не понимаете, то почему решаете задачу именно с их помощью? Если вы не можете чётко сформулировать задачу, в которой есть и удаление, и добавление, и перенос, то, может быть, проще решить задачу методами императивного программирования? (т.к. постановка задачи может неоднократно поменяться, и регулярку каждый раз, может быть, придётся переписывать заново. А в императивном алгоритме, если он изначально составлен правильно, нужно будет только внести некоторые очевидные изменения)

    Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 10:23 30-01-2018 | Исправлено: Dronton2, 10:24 30-01-2018
    mirvery

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

    Цитата:
    Если вы в регулярках ничего не понимаете, то почему решаете задачу именно с их помощью? Если вы не можете чётко сформулировать задачу, в которой есть и удаление, и добавление, и перенос, то, может быть, проще решить задачу методами императивного программирования? (т.к. постановка задачи может неоднократно поменяться, и регулярку каждый раз, может быть, придётся переписывать заново. А в императивном алгоритме, если он изначально составлен правильно, нужно будет только внести некоторые очевидные изменения)  

     
    А потому что мне надо распознанный текст как можно более автоматически привести в тот вид, когда останется только тэги расставить и скомпилировать словарь для Lingvo. Сами как думаете, что лучше: вручную каждую строку (а их там несколько десятков тысяч) исправлять и редактировать, или как-то автоматизировать процесс?
     
    \([^\)]+\)  - это помогло, большое спасибо!
     
    А чтобы в вордовском документе что-либо подобное делать (doc-формат), есть какие-нибудь программы или регулярки для ворда?
     

    Всего записей: 21 | Зарегистр. 26-12-2017 | Отправлено: 14:42 30-01-2018 | Исправлено: mirvery, 15:04 30-01-2018
    YuS_2



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

    Цитата:
    \([^\)]+\)  - это помогло, большое спасибо!  

    А Вы перепроверьте, всё же, ибо для вложенных конструкций этот регэксп совсем не подойдет, т.к. могут быть удалены по одной лишней скобке из парных.
    От такой конструкции:

    Код:
    (abc(sdf(def)ghj)jkl)

    останется "хвост":

    Код:
    ghj)jkl)

    который по условию оставаться не должен...
     
    А вот, три раза запущенный шаблон:

    Код:
    \([^\(\)]+\)

    удалит конструкцию без хвостов.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 15:14 30-01-2018 | Исправлено: YuS_2, 15:16 30-01-2018
    sikemo

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а кстати, щас только обратил внимание на текст, — возможно, вам и не стоит его усекать, посмотрите, все ли умлауты — 
    эти – Mâren*„lang“ no ė  
    1) у вас в исходном тексте пеереданы правильно и
    2) возможно, пометы стан необходимы при построении словарных статей для Lingvo
    там,  можно после заглавия статьи снабдить пояснением  
     
    zulangen  
    (BEIM ESSEN; Chance wahrnehmen)ènötigen
     
    перед (BEIM ESSEN; сатвится табуляция.  
     
    Сначала разберитесь с форматом, структурой статиьи лингво--словаря, чтобы не потерять после обработки что-то существенное.

    Всего записей: 1326 | Зарегистр. 27-11-2008 | Отправлено: 01:03 31-01-2018
    Dronton2

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

    Цитата:
    А потому что мне надо распознанный текст как можно более автоматически привести в тот вид, когда останется только тэги расставить и скомпилировать словарь для Lingvo. Сами как думаете, что лучше: вручную каждую строку (а их там несколько десятков тысяч) исправлять и редактировать, или как-то автоматизировать процесс?
    Вы меня неправильно поняли. Я вам не предлагаю вручную редактировать каждую строку. Я предлагаю вместо регулярных выражений использовать императивное программирование, т.к. при разборе строк со сложной структурой, проще решить задачу императивными алгоритмами.

    Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 10:39 31-01-2018
    mirvery

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В программировании не силен.
     
    Повторю вопрос: есть ли инструменты, чтобы в формате doc делать что-либо подобное автоматически?

    Всего записей: 21 | Зарегистр. 26-12-2017 | Отправлено: 19:33 31-01-2018
    YuS_2



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mirvery
    А Вы настойчивый
    В Worde, в поиске можно использовать подстановочные знаки, но это далеко не регэкспы. Инструменты требующиеся для замены по Вашему условию, возможно и существуют, но ... документ Word - это не просто текст, а архив с набором файлов xml с данными форматирования, стилей и прочего... в общем, задача не совсем простая.
    Если устроит решение для plain text (простой текст), то вот пример на powershell и с описанным выше регэкспом:

    Код:
    $infile = 'in.txt'
    $outfile = 'out.txt'
    $enc1 = [text.encoding]::getencoding("UTF-8")
    $regexp = "\([^\(\)]+\)"
     
    $a = [io.file]::readalltext($infile, $enc1)
    do {
        $b = $a|%{
            $_ -replace $regexp
        }
        $a = $b
    }
    while ($b -match $regexp)
    $a|out-file $outfile

    - работать должен с версии powershell 2.0. Запускать скрипт в одном каталоге с входящим файлом, либо указать к нему абсолютный путь, в данном примере это in.txt
     
    ЗЫ  
    1. Кстати, powershell умеет вытаскивать текст из документов word, но код будет посложнее и мне очень лениво запускать думалку в этом направлении...
    2. Только с вопросом: как запускать и прочими, относительно powershell, необходимо перейти в соответствующую ветку, здесь это оффтопом будет.

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 20:57 31-01-2018 | Исправлено: YuS_2, 21:00 31-01-2018
    Dronton2

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

    Цитата:
    Повторю вопрос: есть ли инструменты, чтобы в формате doc делать что-либо подобное автоматически?
    С документами в формате doc лучше всего работает MS Word. В нём есть Visual Basic или что-то подобное (точно не могу сказать, т.к. уже лет 20 ничего не писал на VBA).
    На форуме есть ветка, специально посвящённая Word VBA: http://forum.ru-board.com/topic.cgi?forum=33&topic=5312&start=760

    Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 11:50 01-02-2018
    mirvery

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всё задолбало!
     
    Буду потихончеку тыщщу с лишним страниц текста вручную редактировать!
     
    Спасибо за советы и ответы!  
    Потом еще поспрашаю

    Всего записей: 21 | Зарегистр. 26-12-2017 | Отправлено: 14:19 04-02-2018
    YuS_2



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

    Цитата:
    Буду потихончеку тыщщу с лишним страниц текста вручную редактировать!

    Жестоко... по отношению к свободному времени
    У Вас же было  24-01-2018:

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


    Цитата:
    удалятся будет с такого же текста в txt-формате.

    Показанное выше решение на powershell, выполняет именно это и всего лишь секунд за 7-8...  
    Что именно привело Вас к ручному редактированию?

    Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 21:53 04-02-2018
    regist123



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    YuS_2 22:53 04-02-2018
    Цитата:
    Показанное выше решение на powershell, выполняет именно это и всего лишь секунд за 7-8...  
     Что именно привело Вас к ручному редактированию?

    по мне очевидно - нежелание отвечать на наводящие вопросы. Даже выше регулярки, что выложены не понятно подходят или нет и почему. Если бы он приложил усилия не на повторения одного и того же вопроса, а на разъяснения деталей, то очевидно что помочь смогли бы лучше. А так раз не желает, то зачем уговаривать, чтобы разрешил ему помочь?

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

    Всего записей: 7189 | Зарегистр. 20-03-2009 | Отправлено: 00:01 05-02-2018
    DenSyo

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mirvery
    выложил для вас функцию разбора строки по тэгам
    http://forum.ru-board.com/topic.cgi?forum=33&topic=5993&start=1180#lt
     
    первый пример показывает ваш случай, поиск тэгов и удаление содержимого между ними.

    Всего записей: 218 | Зарегистр. 19-01-2008 | Отправлено: 04:10 05-02-2018
    Открыть новую тему     Написать ответ в эту тему

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

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru