Доброе время суток! Не могу разобраться с регулярными выражениями. Если не сложно, напишите здесь примеры каких нибудь полезных регулярных выражений... Заранее благодарю!
Думаю, рациональнее всего бы было перенести тему в справочный раздел, ибо тема действительно интересна и обширна. Как-то я, например, долго подбирал регулярку на поиск глав по цифрам, но так ничего путно и не получилось, плюнул, и переименова все главы из "1" в "глава 1"
Пост N: 120
Зарегистрирован: 02.10.06
Откуда: РФ, Санкт-Петербург
Рейтинг:
0
Отправлено: 25.09.11 14:49. Заголовок: Пожалуй, теорию я ту..
Пожалуй, теорию я тут расписывать не буду, этого добра при желании в интернете можно найти много. Начать стоит хотя бы со странички на википедии.
Что касается практики, то приведу несколько примеров:
чтоб далеко за примером не ходить, начнем с поиска глав =) пример (главы по цифрам с точкой или без точки):
1. текст текст текст текст~ ~текст текст текст текст.
2. текст текст текст текст~ ~текст текст текст текст.
3. текст текст текст текст~ ~текст текст текст текст.
шаблон:
^ *\d+\.?$
"^" - поиск начинается с начала строки " *" - пробелы в начале строки, если они есть "\d+" - одна или несколько цифр идущих подряд "\.?" - если после цифр есть точка, включаем и ее тоже "$" - конец строки
пример (цифры с точкой + название главы):
1. ДОЛГОЖДАННЫЙ ПРИЕМ текст текст текст текст~ ~текст текст текст текст.
2. ТЕНЬ ПРОШЛОГО текст текст текст текст~ ~текст текст текст текст.
3. ТРОЕ - ЭТО КОМПАНИЯ текст текст текст текст~ ~текст текст текст текст.
шаблон: ^ *\d+\..*$
"^" - поиск начинается с начала строки " *" - пробелы в начале строки, если они есть "\d+" - одна или несколько цифр идущих подряд "\." - точка ".*" - что угодно (все символы сколько их есть до конца строки "$") "$" - конец строки Пример (пустая строка + название главы + пустая строка):
Глас рассудка I
текст текст текст текст~ ~текст текст текст текст.
Ведьмак
текст текст текст текст~ ~текст текст текст текст.
Глас рассудка II
текст текст текст текст~ ~текст текст текст текст.
Шаблон: \r\n\r\n.{1,50}\r\n\r\n
"\r\n\r\n" - Cимволы перевода строки (CR LF). Два перевода подряд (CR LF CR LF) = пустая строка ".{1,50}" - Название главы (строка не более 50 любых символов) "\r\n\r\n" - Символы перевода строки (CR LF). Два перевода подряд (CR LF CR LF) = пустая строка т.е. шаблон ищет строку не более чем в 50 символов, отделенныю от остального текста пустой строкой сверху и снизу.
Примечание: при поиске глав все найденные символы новой строки и пробелы по краям потом удаляются из тэга автоматически, так что можно не заморачиваться с дополнительными шаблонами поиска строк перед и после основного шаблона (вроде "(?<=\r\n\r\n).{1,50}(?=\r\n\r\n)" )
Что касается использования регулярных выражений в словарях, то см, например, тему про омографы... Для экспериментов можно использовать служебное окно отладки словарей в режиме "RegEx", открывающееся через редактор словарей: Скрытый текст
Отправлено: 25.09.11 19:17. Заголовок: Если нет много време..
Если нет много времени чтобы составить словарь можно начать с простейших выражений типа (?i)(?<=(ают|гие|дние|жие|кие|нние|рил|тал|хие|шие|шние|щие|ые).{0,5})\bсектора\b = сектора< (?i)(?<=(али|ать|ают|гие|гли|дние|дул|ены|жие|ись|ите|ить|кие|хие|шие|шние|щие|ые).{0,5})\bсвечи\b = све<чи и такие в окончания подходят для большинства омографов, но и такой простой поиск поможет избавиться от большинства ошибок при произношении того или иного слова, я на работе в течении дня слушая книгу записываю где он неправильно произносит, а вечером добавляю в словарь. пы.сы жаль нет поиска по тексту приходится искать в другой программе. вот словарь замены правда он еще не идеален click here
Всем привет. Уже всю голову сломал, не понимаю... Вот ваше мнение какое?? Вы думаете это выражение будет реально работать?? Ну вот сами посмотрите.. на это выражение вываливается ошибка - видимо шаблон али|ать|ают и т.д. нельзя брать в скобки, т.е. группировать... Единственный способ, который у меня получился - это выражение такого типа: (?<=али|шие|шние|щие|ые)\b.{0,30}свечи\b и для анализируемой строки догарали наши свечи решение будет вида догарали наши свечи, причем вместе с пробелом тут можно посмотреть результат. и далее, если рег. выражение будет такого типа (?<=али|шие|шние|щие|ые)\b.{0,30}свечи\b = све<чи, то мы благополучно заменим найденное выражение наши свечи на выражение све<чи и итогом будет не строка догарали наши све<чи, а строка догарали све<чи Может кто знает, решается ли вообще эта задача по поиску конкретного слова (свечи) в зависимости от предшествующего контекста (окончания определений для слова свечи)?
Ну вот сами посмотрите.. на это выражение вываливается ошибка - видимо шаблон али|ать|ают и т.д. нельзя брать в скобки, т.е. группировать...
Смотря где...
Сущестуют различные реализации интерпретаторов регулярных выражений, и у каждой могут быть небольшие отличия и особенности. Онлайн сервис по вашей ссылке предназначен для тестирования выражений в среде языка Ruby. В нем, как и во многих других интерпретаторах регулярных выражений, поддержка look-behind ограниченная: результтат внутри (?<=...) всегда должен быть фиксированной длинны, а это значит, что "*", "+", "{x,y}" и прочие квантификаторы для неизвестного количества повторов, а так же варианты различной длинны, разделенные символом "|" недопустимы.
В KooBAudio используется движок регулярных выражений, встроенный в .NET Framework. Он полностью поддерживает все возможности синтаксиса внутри look-behind групп, и такое выражение будет работать.
Для проверки есть встроенная опция "Меню Словари->отладка словарей->RegEx" или кнопка с увеличительным стеклом в панели инструментов редакора словарей. В последней версии как раз она была усовершенствована для удобства работы с рег.выражениями в редакторе.
Есть простой режим проверки рег выражений. Скрытый текст
В верхнем поле - выражение, в нижнем текст, в котором ищутся совпадения.
В режиме проверки словарей все устроено вот как: Скрытый текст
в поле (3) можно ввести любой текст для проверки. в поле (4) - результат обработки текущими словарями. Если открыто окно редактора словарей, и в снем нажать кнопу "Сохранить", то этот результат автоматически обновится. В списке (5) будут показаны правила, которые выдали совпадения. Зачеркнутые - те, что ссылаются на "занятый" другим правилом фрагмент, и не влияют на результат. Если открыты одновременно окно редактора и отладки словарей, и в редакторе включена подсветка синтаксиса (2), то текст в поле (3) будет подсвечен редактируемым выражением.
Пост N: 223
Зарегистрирован: 02.10.06
Откуда: РФ, Санкт-Петербург
Рейтинг:
0
Отправлено: 27.04.13 15:44. Заголовок: P.S. Свои словари вы..
P.S. Свои словари выложу как-нибудь позже, все никак руки не дойдут окончательно рассортировать и привести их в порядок...
Вот еще пара советов с примерами использования регэксов в словарях:
Не обязательно всегда использовать .{0,x}. Если словосочетание более-менее конкретное, можно использовать конструкции типа ( \w+)? для возможного одного слова между ключевым словом и омографом...
Кроме поиска вперед/назад в группах (?<=...) (?=...) можно так же иногда использовать обратную связь, чтобы вставить содержимое группы в результат замены, например:
$1 вставит результат (замк[ауиео]) $2 - результат (х|м|ми|в)?
Номера групп присваиваются автоматически, начиная с 1, слева направо. Группы, к которым не нужно потом обращаться рекомендуется обьявлять с ключем ?: (?:шаблон) - для таких групп обратная связь не создается, и они пропускаются при нумерации. Это так же немного ускорит обработку правила. При большом кол-ве правил со обилием группировок это может дать заметный прирост производительности.
В сложных выражениях с обилием вложенных групп можно использовать именованные группы, чтобы не высчитывать номер нужной группы, а обратиться к ней по имени.
Теоретически возможно, но НЕ рекомендуется. Т.к. правило зарезервирует весь соответствующий текст, и прочие правила не смогут его обработать. Например, правило догарали=>догара<ли Будет отсеяно в тексте "догарали наши свечи", т.к. слово уже зарезервировано правилом для омографа...
В общем, для таких правил, лучше использовать поиск вперед/назад в (?<=...) (?=...) с ними резервируется только "нужное" слово, а окружающий текст может быть потом обработан другими правилами.
Отправлено: 27.04.13 23:06. Заголовок: На самом деле там вс..
На самом деле там все достаточно просто 1 если ищешь только по окончанию то регулярное выражение выглядит примерно так: (?i)(?<=(а(ли|ть|ют)|(г|дн|ж|к|х|хн|ш|шн|щ)ие|дел|ены|жит|иеся|или|ить|кины|лил|лись|няли|рил|рыл|сал|тся|шую|ые|ыть)\b.{0,5})\bокна\b (г|дн|ж|к|х|хн|ш|шн|щ)ие это чтобы не писать отдельно гие|дние| и так далее \b это чтобы искало только в окончание, \b ставит границы слова .{0,5} количество символов перед этим словом \bокна\b так же с границами чтобы не искало слова окнами или корень окна в других словах
2 если ищет окончания после нужного слова (?i)\bвсе\b(?=[^\.,!?\b-\b]{0,15}(вало|дило|ейно|ело|ено|зано|ивое|ишь|кало|комо|лось|льно|мал|ойно|ояло|нее|нно станет|тите|ький|ясно)\b) \bвсе\b опять же границы слова [^\.,!?\b-\b] чтобы не искало если есть между словами точки, запятые, воск знаки, и тире |комо|лось|льно| окончания слов для слова всё )\b) чтобы искало только окончания
3 по поиску слов если есть и другие слова между ними (?i)(?<=(бледне(ют|ли)|гор(ели|ят)|неме(ли|ют)|ожег|раздул|раст(ер|ир)|\bтер\b|тер(ла|ли)|(вы|рас)тер|щекотал)[^\.,!?\b-\b]{0,30})\bщеки\b бледне(ют|ли)|гор(ели|ят) корень один но окончания разные [^\.,!?\b-\b] чтобы не искало если есть между словами точки, запятые, воск знаки, и тире {0,30} количество символов между словами \bщеки\b ограничение слова
Отправлено: 08.05.13 11:53. Заголовок: MoppoH пишет: На са..
MoppoH пишет:
цитата:
На самом деле там все достаточно просто 1 если ищешь только по окончанию то регулярное выражение выглядит примерно так: (?i)(?<=(а(ли|ть|ют)|(г|дн|ж|к|х|хн|ш|шн|щ)ие|дел|ены|жит|иеся|или|ить|кины|лил|лись|няли|рил|рыл|сал|тся|шую|ые|ыть)\b.{0,5})\bокна\b
Может я загоняюсь, но мне кажется всё совсем не так просто.. К примеру вышеприведённое выражение нежизнеспособно.. Поправьте меня, если я ошибаюсь. Скрытый текст
Отправлено: 09.05.13 10:52. Заголовок: почему Вы так решили..
почему Вы так решили, будут заменены, разбив(али) окна, разбив(ают) все окна, это можно проверить в отладке проекта в реальном времени. группа (а(ли|ть|ют)) содержит в себе две группы и все окончания на али, ать, ают, будут найдены на растояние 5 букв и пробелов от слова окна Скрытый текст
Пост N: 229
Зарегистрирован: 02.10.06
Откуда: РФ, Санкт-Петербург
Рейтинг:
0
Отправлено: 09.05.13 20:43. Заголовок: odinokiyklaus Это ба..
odinokiyklaus Это баг в окне отладки. При редактировании нижнего поля (текст для проверки) в RegEx режиме автообновление не срабтывает, подсветка остается от предыдущего результата... В следующей версии будет исправлено, пока же нужно вручную обновалять кнопкой со стрелкой.
Не подскажете ли, уважаемые, существуют ли текстовые редакторы, поддерживающие все возможности синтаксиса внутри look-behind групп, как движок регулярных выражений, встроенный в .NET Framework? Или использующие этот движок. Сильно расширяются возможности автоматизации обработки текстов.
подскажите гуманитарию, надо регулярное выражение, чтобы "*го гла<за", но с исключением "его глаза", - по всей моей практике, единственно необходимое регулярное выражение.
#(?i)(?<=(\Bего|ого)\b[^\.,!?-]{0,2})\bглаза\b=глазаъ< я пользуюсь таким, символ \B обозначает что это не конец слова, [^\.,!?-] обозначает что между его и глаза нет запятых и других знаков, \bглаза\b обозначает что будет искать только слово глаза, а не глазастых или Оглазар
но все равно бывают исключения, зрачок его гла<за, закрыл его глаза<
Отправлено: 25.01.16 20:09. Заголовок: MoppoH порылся в сущ..
MoppoH порылся в существующих словарях регулярных выражений на сайте - нашел несколько правил, которые перекрыли всю необходимую потребность, на все случаи жизни. Да тут, оказывается, все есть, только вручную копаться надо...
Отправлено: 02.08.16 22:09. Заголовок: в квадратных скобках..
в квадратных скобках указываются одинарные буквы, при нахождение которых срабатывает рег выражение в круглых скобках можно указать сочетание букв, при нахождение которых сработает рег выражение то есть (а|е|и|о|я)[бнтц]и(е|и|й|ю|я) найдет ение, ация а вот (тут можно написать что именно надо найди до|прис)[бнтц]и(е|и|й|ю|я) найдет присбию, присния
в некоторых случая слова заканчивающиеся на А даже если стоит ударение все равно читает не правильно, а при добавление Ъ уже читает правильно видимо баг движка
Пост N: 75
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг:
0
Отправлено: 02.08.16 23:05. Заголовок: Лично для меня хорош..
Лично для меня хорошим учебником была статья в Википедии и практика в написании выражений. Я отключил все словари, завел один, включил его и в нем ужен писал правила через notepad++ и в окне отладки словарей смотрел на получившиеся результаты.
[бнтц] - один любой из символов из этого перечня [перечень одиночных символов] [бнтцоа]{1,2} {1,2}-квантификатор - означает один или два символа из перечня [] - пример цо ба ц б - все подходит {1,} - один и более (с правой стороны внутри после запятой нет ограничения) [бнтцоа]+ знак плюс после перечня - не менее одного символа из перечня [бнтцоа]? знак вопроса после перечня - ноль или один символ из перечня [^\.,!?-] - любой символ кроме . (точка) , ! ? - . - знак точки означает вообще любой один символ. Чтобы написать именно точку её экранируют \. это означает точку (она|оно|они) - любой вариант в скобках сработает. знак | - означает или \b - граница слова то есть \bвсе\b - найдет только слово все, а слово всех проигнорирует \В - середина слова
Это условия поиска по типу если перед словом1 стоит слово2 или слово3, то слово1 будет найдено, а иначе не найдет. (?<=(слово2 |слово3))слово1 =слово<1 - заменяет найденное слово1 на слово<1 с ударением пример (?<=(слово2 |слово3 ))слово1=слово<1 - найдет в выражениях "слово2 слово1" или "слово3 слово1" слово1 и заменит его на слово<1
Не стесняйся эксперементировать и спрашивать! Удачи!
вОды || а в брызгах воды сверкала радуга. Себя вОды || в трюме, где воды - несколько несчастных кубометров? вОды || вЕчераъ не могли воды набрать, чтобы пораньше вОды || вшестером без продовольствия, воды и связи с вОды || доложишь. А насчет воды пошли к нам вОды || зеленом колеблющемся полумраке воды маячили лИцаъ людей, вОды || И дай человеку воды, твою мать, - он вОды || И пусть бойцы воды побольше натаскают. Всеъ вОды || из за отсутствия воды. вОды || море исчезла полусфера воды, - и по сей водЫ || набрал из крана воды - казалось, у него вОды || наличии продовольствия и воды. Его группа выросла вОды || напоминал кошмарные видЕния. воды недоставало. Люди, исхудавшие вОды || ним, блестя капельками воды, подошли Жмакин и вОды || Отдышись пока, только воды не пей, - видя, вОды || почти не требовал воды, а сейчас всё вОды || причем не просто воды, а сладкой. И вОды || пыталась залить пригоршнями воды огонь. вОды || разоружили, не давали воды и еды, держали вОды || раскрасневшиеся, с каплями воды на загорелом теле, вОды || расслабятся, перекусят и воды попьют. Они пошли вОды || с несколькими глоткАмиъ воды. Но это не вОды || содержащейся в чашке воды. Дело в ощущении водЫ || сразу несколько кружек воды. вОды || сразу предупредил, что воды мало - водопровод не вОды || Среди пены и воды мелькали толстые щупальцеподобные вОды || Тело категорически требовало воды. Пришлось идти в вОды || Тит попросил воды. Небесный подумал о вОды || только одно. Следы воды на теле отсутствуют. вОды || участки травы и воды. Вот эскалатор, ведущий вОды || хотя утекло немало воды.
#(?i)(?<=(2|блеск|бутыл[ко]|глот(кам|ками|ков|ок)|запас|капельками|капл(ей|ю|я|ями)|кран|круж(ек|ка|ке|ку)|литр|напи(лись|лся|ться)|насчет|отсутстви(ем|и|ю|я)|немало|пены|пленк|полумра(ке|ку)|полусфера|попросил|пригоршнями|продовольствия|продовольствия\,|просто|след|стакан|травы|требова(л|ла|ли|ло|лось)|чашк(а|е|и|ой|у)|челове(ка|ком|ку))[^\.,!?-]{0,30})\bводы\b=водЫ к Возможно ли прикрутить запятую , чтоб не дублировать слово. И тире заодно?
Пост N: 76
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг:
0
Отправлено: 03.08.16 09:55. Заголовок: Речь идёт о Николае?..
Речь идёт о Николае? |продовольствия\,| - запятую экранировать не надо - это не оператор типа точки, а просто один из символов.
Прикрутить запятую можно, как напишете так и будет искать
2| - по моему бессмысленный оператор. "2 капли воды" что-ли? может всё-таки так "две капли воды"
(ек|ка|ке|ку) - оператор скобки выделяет память для обработки, чтобы к этому фрагменту можно было обратиться позднее ($1 - после знака равно стоит обращение к скобкам 1 и т.п.) оператор перечня памяти не выделяет. я бы написал лучше так - [каеу]{2} и добавил бы еще окончаний: кой ками ках. В итоге получилось бы [каеойумих]{2,4}
wasyaka пишет:
цитата:
Возможно ли прикрутить запятую , чтоб не дублировать слово. И тире заодно?
не понял вопроса. Кажется догадался. Это |продовольствия\,| можно так написать |продовольствия[,]?| [,]? - ноль или один раз из перечня
Пост N: 77
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг:
0
Отправлено: 03.08.16 12:12. Заголовок: wasyaka пишет: И вн..
wasyaka пишет:
цитата:
И внекоторых рег. выражениях добавлен Ъ:
Лично я в своих правилах Ъ знак добавляю за тем, чтобы последующие выражения не смогли второй раз обработать искомое слово.
Тут требуется пояснение. В KoobAudio реализованая великолепная задумка (подробнее смотри справку) - любые выражения, расположенные в словарях в основной папке (то есть не в папках 1 и 2), слово которое уже было обработано проигнорируют. Однако, обработка уже обработанного слова сможет и будет сделана в папке постобработки (папке 2). Чтобы этого не было сделано лично я вставляю перед знаком ударения Ъ знак.
...|год|давлени[емюя]{1,2}....{0,30})\bвойны\b=войнЫ сработало: давлением войнЫ, -- годы войнЫ; годом войнЫ удалил квадратно-фигурные скобки, оставил: |давлени| -- результат тотже. т.е в скобках только заданные окончания, а если без них, то слово получается"безконечным"? В смысле сработает на непонятно что(годные и т.д.?
#(?i)(?<=\b(искомое выражение)[любые символы кроме . , ! ? -]{0,30})\bвойны\b=войнЫ \b(искомое выражение) - искомое выражение начинается с того что перечислено в скобках и далее следом за искомым выражением идут любые символы, кроме . , ! ? - (то есть буквы, цифры, пробелы, и т.д) в количестве от нуля до 30 штук.
В этот промежуток [^\.,!?-]{0,30} и укладываются все ваши окончания которые могут встречаться. Таким образом может быть обработано не только выражение близос[итью]{2,3} - близости близостью, но и "близос"[тя] + "ми" или "близос"[тя] +"тратататата" и т.д, потому что "ми" и "тратататата" полностью укладываются в диапазон идущий следом - [^\.,!?-]{0,30} Скрытый текст
Чтобы ограничить искомое выражение с двух сторон следует использовать \b(искомое выражение)\b
\bвсе - найдет слово всех, всеми всеобщий и т.д \bвсе\b - найдет толюко слово все
То есть если вы напишите вот такое выражение #(?i)(?<=\b(искомое выражение)\b[любые символы кроме . , ! ? -]{0,30})\bвойны\b=войнЫ то у вас будет находить только выражения "близости войны" "близостью тратата войны" и т.д.
Так писать нельзя. Можно так {1,2} -"от одного до двух", {1,3} "от одного до трёх". Но не так - {1,2,3} Внутри квантификатора {} симол | не допускается. Можно только одну или дву цифры и запятую - {2} {,6} {5,} {5,10}. хотел|) посли хотел идет | и правая скобка. Раз между ними нет символа - то значит будет обрабатываться "пустой" - читай любой симсол.
Такие выраджения типа этого (хотел|) вообще недопустимы То есть пример выражение #(?i)(?<=\b(хотел|)\b[^\.,!?-]{0,30})\bвойны\b=войны найдет не только хотел войны но и хотелтратата войны так как обработает пустой симовол |) в количестве от нуля до 30-ти раз. Скрытый текст
Алгоритм 1. Замена @ (в Балаболке это символ НЕ игнорировать регистр) на выражение (?-i) (В рег. выр. НЕ игнорировать регистр так описывается)
2. Замена # (в Балаболке это комментарии) на // - (в KoobAudio это комментарии)
3. Замена \r\n на выражение \r\n# - все рег. выражения в KoobAudio должны начинаться с символа #
4. Поскольку в оригинальном словаре (строки 521-525, 578) в рег. выражениях встречается выражение :$21: и тому подобное, то возникает ошибка, и такие правила не обрабатываются. Поясню, в рег. выражении после знака равно "=" стоит выражение на которое меняется искомое выражение. После символа $ должна стоять цифра от 1 до 9 (это ссылка на скобку (группу) в искомом выражении. (Пример #(\d)(\d)=$1 - здесь будет напечатано только первая цифра, обрамлённая первой группой скобок) . Если после символа $ встретится две подряд идущие цифры, то такое выражение будет проигнорировано и не обработано (#\b([0]?1)<t([a-z])(\d)>=<$1:$21:t$3> - в выражении перед = нет 21 группы). Чтобы правила в строках 521-525, 578 были обработаны правильно я разделил в выражении :$21: символы $2 и 1 знаком @. После корректной отработки этих выражений символ @ удаляется. Поэтому в исправленном словаре, добавлены два дополнительных правила #:([a-z])@(\d):=:$1$2: (строки 531 и 580).
Ссылки на словари (там же сравнение результатов обработки старого и нового словаря) - https://yadi.sk/d/EjYyUpK4uUPDo Пользуйтесь на здоровье!
Забыл добавить. Чтобы числительные работали корректно, этот словарь должен быть помещён только в паку 1 (папка предварительной обработки). В общей папке (где по умолчанию лежит словарь Числительные.dic) новый словарь не будет правильно работать. Словарь Числительные_KoobAudio можно отключить, а можно и оставить.
P.S. Чтение чисел стало значительно лучше (использую оба словаря), но время обработки заметно увеличилось. Но пока это не критично.
Пост N: 15
Зарегистрирован: 30.04.16
Откуда: ЛНР, краснодон
Рейтинг:
0
Отправлено: 30.08.16 12:03. Заголовок: odinokiyklaus Ещё р..
odinokiyklaus Ещё раз(неоднократно) спасибо. Вопросы:(ко всем пользователям) 1.Возможно ли прописать(рег), чтобы после названия книги, главы и т.д. ставилась точка? Чтоб читалось раздельно?
цитата:
Владимир Стрельников
Ссыльнопоселенец
2.Возможно ли в KooBAudio применить теги для смены голоса(прочтение сносок, антоннация ит.д.)
ежим Билингво пробовали? Может там это уже реализовано? (сразу скажу, я не пробовал).
Билингво - это чтение латиницы. в словаре chisla нашел ошибку:(в оригинале 167) (\bв\b)\s((\bначале\b|\bконце\b|\bсередине\b|(\bпервой\b|\bвторой\b)\s\bполовине\b)\s)(\d+)<рим\.ч\.>\s(\bв\.|\bвека\b)=$1 $2$5<td6> века(<td6>заменить на <td2>)(ом на ого) Попытался улучшить навроде 40-41х и 40-41-х (Игнор первой цифры)
Пост N: 89
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг:
0
Отправлено: 20.09.16 12:06. Заголовок: wasyaka пишет: в сл..
wasyaka пишет:
цитата:
в словаре chisla нашел ошибку:(в оригинале 167) (\bв\b)\s((\bначале\b|\bконце\b|\bсередине\b|(\bпервой\b|\bвторой\b)\s\bполовине\b)\s)(\d+)<рим\.ч\.>\s(\bв\.|\bвека\b)=$1 $2$5<td6> века(<td6>заменить на <td2>)(ом на ого)
Я римскими числами из этого словаря вообще не пользуюсь. Меня напрягает, что из-за этих правил обработки римских чисел каждый введёный символ обрабатывается. Для себя я сделал по другому - перед словарем обработки чисел задал свои правила перевода римских чисел в арабские. И стало всё гораздо лучше.
Кроме того, из-за этих "римских правил" обработка выражений типа при И. Ю. Петре VIII I.B.M. Company становится совсем безобразным. Я для себя решил эту проблему и теперь это тестовое выражение обрабатывается корректно. Скрытый текст
Срабатывает, но длинный пробел(2или3) и ]+) - его роль?
Длины пробел должен быть еще в самом начале обработки любых правил заменён коротким. Проверьте наличие правила в словаре чисел. Если его нет, то добавьте в самое его начало.
#\—|\–=-
Кстати эти тире — или – или - вовсе не обязательно экранировать (т.е. писать так \-). Эти знаки не являются спецсимволами. Так что если напишите просто правило
#—|–=-
то оно тоже сработает
wasyaka пишет:
цитата:
[A-Za-zА-яЁё]+
Символы в квадратных скобках без знака (квантификатора) "+" или "*" - означает любой один! из перечисленных символов. Знак "+" после [] т.е. []+ - тоже самое что и []{1,} - то есть любой из символов в количестве больше одного (один или более символов). "*" - то же только "ноль или более символов" Таким образом выражение "[A-Za-zА-яЁё]+" это любые символы из перечня, с учётом регистра букв, в количестве более одного.
Как я понял это чтение диалогов двумя голосами. Отличный режим для оживления Николая. Можно настроить тембр, скорость чтения в диалогах. ТО есть, к примеру, первый голос читает выше и быстрее (вопрошает), а второй басовитее и медленнее (отвечает раздумывая не поставленный вопрос).
По идее, это правила для обработки омографов - слов, в которых ударение ставится в зависимости от контекста или написания заглавной буквы. Здесь надо после большой гласной буквы "О" или "Ю" поставить знак ударения, чтобы получилось типа такого:
Ударение заглавной буквой(гласной) Смысл: Если начальное слово строки соответственно написанное с заглавной омограф вручную или словарём. если в тексте то: Колю побили=КОлю побили; колю лёд=колЮ лёд; - омограф проставляется автоматом, а смысл вопроса : Правильно составлено рег выражение?
ну и по числам: строка 340#(?i)(\bглава\b|\bчасть\b|\bкнига\b|\bсерия\b)\s(\d+)([^\-\d+])?=$1 $2-я$3... добавил (?i) иначе если Глава(с заглавной) не срабатывало) добавил стр. 372 Скрытый текст
В словарь corector у вас clean добавил(это всё для чисел) Скрытый текст
#(\d+)(\.)(\d+)(\.)(\d+)=$1$2 $3$4 $5 #(\d+)х(\d+)х(\d+)=$1 на $2 на $3 #(\d+)(\,)(\d+)х(\d+)=$1 $3 на $4 #(\d+)(\.)(\d+)=$1:$3 #от\s(\d+)(\.)\s(\d+)(\.)=от $1-го $3-го #с\s(\d+)(\.)\s(\d+)(\.)=с $1-го $3-го #что\s(\d+)(\.)\s(\d+)(\.)=что $1-го $3-го #и\s(\d+)(\.)\s(\d+)(\.)=и $1-го $3-го #по\s(\d+)(\.)\s(\d+)(\.)=по $1-е $3-е #за\s(\d+)(\.)\s(\d+)(\.)=за $1-е $3-е #(\d+)(\.)\s(\d+)(\.)=$1-го $3-го #\b(0)(\,)(\d+)=$1 $3 #(\d+)(\,)(\d+)=$1 и $3
И консультация: словарь е=ё (балаболка) очень громозкий, ели его в основную группу - конфликт(вздёрнул брОви). В папке 1 - тормоз,разделил словари на две группы 1-я (папка 1 + е=ё + все=всё + сокращения + транслит)) 2-Я омографы и обрабатываю в два прохода. - альтернатива?
В принципе(в основном) голос Speech2Go ( 247_S2G_Maxim и 248_S2G_Tatyana) адаптировал под KooBAudio Ели интересно поделюсь. Образец https://yadi.sk/d/FrjLlH-gvSFd2
Отправлено: 20.09.16 18:42. Заголовок: да Максим и Татьяна ..
да Максим и Татьяна имеют более человеческое произношение, но эти движки читают без интонаций, без знаков препинания или я просто привык к Николаю Образец https://yadi.sk/d/aKJNxneXvSXz3
Пост N: 93
Зарегистрирован: 29.03.13
Откуда: Санкт-Петербург
Рейтинг:
0
Отправлено: 25.09.16 23:45. Заголовок: Всем привет! Тем ком..
Всем привет! Тем кому удобно редактировать рег. выражения в замечательной программе Notepad++, рекомендую использовать настройки, которые эффективно подсвечивают их синтаксис. Скрытый текст
Если установка программы Notepad++ производилась по умолчанию, то её настройки будут располагаться по пути (для Windows 7): c:\Users\ИМЯ\AppData\Roaming\Notepad++\
В данную папку поместите файл userDefineLang.xml, а в папку themes - KoobAudio_Theme.xml После этого следует перейти по пути Опции->Определение стилей-> и далее выбрать тему KoobAudio_Theme Скрытый текст
Далее выбрать Стиль синтаксиса KoobAudio Скрытый текст
Привет! Вопрос: Фраза:Кукловод #4Новый фантастический боевик (Эксмо) Приключения Кукловода продолжаются! рег #([A-Za-zА-яЁё])\s(#)(\d)=$1. книга $3 Получилось: Кукловод. книга четвёртая ...Новый фантастический боевик (Эксмо) Приключения Кукловода продолжаются! Возможно ли, чтобы после троеточия фраза начиналась с новой строки?
Возможно ли, чтобы после троеточия фраза начиналась с новой строки?
Конечно! В любом месте можно сделать перенос строки. Для этого нужно после знака равно вставать последовательность символов \r\n, которые программа опознает как перенос строки.
К примеру: #([A-Za-zА-яЁё])\s(#)(\d)=$1. книга $3 - заменить на #([A-Za-zА-яЁё])\s(#)(\d)=$1. \r\nкнига $3
В этом случае книга $3 будет перенесено на следующую строку.
\r - перевод каретки в начало строки на которой вы находитесь \n - переход на новую строку с текущей строки
Конечно! В любом месте можно сделать перенос строки. Для этого нужно после знака равно вставать последовательность символов \r\n, которые программа опознает как перенос строки.
СПАСИБО!
Ну и вопрос: Сноска:[2 - Колония на Тобаго не оказала сопротивления Бриджесу и была полностью разграблена, правда, без кровопролития.]. надо заменить ] на </VOICE> ] = </VOICE> срабатывает [2 - Колония на Тобаго не оказала сопротивления Бриджесу и была полностью разграблена, правда, без кровопролития. на <VOICE REQUIRED="NAME=IVONA 2 Tatyana OEM"> - текст сноски с учётом изменяемым номером ссылки?
[2 - Колония на Тобаго не оказала сопротивления Бриджесу и была полностью разграблена, правда, без кровопролития. на <VOICE REQUIRED="NAME=IVONA 2 Tatyana OEM"> - текст сноски с учётом изменяемым номером ссылки?
[2 - Колония на Тобаго не оказала сопротивления Бриджесу и была полностью разграблена, правда, без кровопролития.].
прочитает Максим. а при таком:
<VOICE REQUIRED="NAME=IVONA 2 Tatyana OEM"> 2 - Колония на Тобаго не оказала сопротивления Бриджесу и была полностью разграблена, правда, без кровопролития. </VOICE>.
Прочитает Татьяна. С помощью опции заменить(это в Балаболке) квадратные скобки меняются на теги, цифру(ы) приходится удалять вручную...
Прочитает Татьяна. С помощью опции заменить(это в Балаболке) квадратные скобки меняются на теги, цифру(ы) приходится удалять вручную...
Если нужно удалить только цифру, то поместите это правило куда-нибудь в предобработку. Оно удалит в выражении "[2 - Колония" это - "2 - ". В результате чего вместо этого "[2 - Колония" должно остаться "[Колония"
Привет! Камрады. Пытался зайти с ноута - Так всё секретно... - несмог побороть защиту от пользователей... Печально... Но... (после многочисленных тестирований) - лучшая прога для работы (начальной подготовки с словарям). Но, читалка, -попирание прав человека... Несколько вопросов: |!вырва|- для чего !знак? [\S]- ???
чтобы не добавить еще раз это сочетание в рег выражение, так как оно встречается с обоими омографами, ! не дает искать это словосочетание, знак ! не принципиально можно было бы использовать любой знак wasyaka пишет:
чтобы не добавить еще раз это сочетание в рег выражение, так как оно встречается с обоими омографами, ! не дает искать это словосочетание, знак ! не принципиально можно было бы использовать любой знак
Спасибо. Эксперементировал. Перегонял в rex-на ! указывало ошибку и вся строка не работала.
Всем привет! Тем кому удобно редактировать рег. выражения в замечательной программе Notepad++, рекомендую использовать настройки, которые эффективно подсвечивают их синтаксис.
Привет! А возможно прописать указание на ошибки(к имеющемуся \ вместо |)? И также в окне программы, где только нехватка или излишек скобок... А то приходится с помощью найти-заменить, что не всегда вовремя вспоминается... Ошибки: || пробел | | пробел \b\b (| |) Или как то прописать, чтоб автоматом?
Все даты в формате GMT
3 час. Хитов сегодня: 2
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет