Доброе время суток! Не могу разобраться с регулярными выражениями. Если не сложно, напишите здесь примеры каких нибудь полезных регулярных выражений... Заранее благодарю!
вОды || а в брызгах воды сверкала радуга. Себя вОды || в трюме, где воды - несколько несчастных кубометров? вОды || вЕчераъ не могли воды набрать, чтобы пораньше вОды || вшестером без продовольствия, воды и связи с вОды || доложишь. А насчет воды пошли к нам вОды || зеленом колеблющемся полумраке воды маячили лИцаъ людей, вОды || И дай человеку воды, твою мать, - он вОды || И пусть бойцы воды побольше натаскают. Всеъ вОды || из за отсутствия воды. вОды || море исчезла полусфера воды, - и по сей водЫ || набрал из крана воды - казалось, у него вОды || наличии продовольствия и воды. Его группа выросла вОды || напоминал кошмарные видЕния. воды недоставало. Люди, исхудавшие вОды || ним, блестя капельками воды, подошли Жмакин и вОды || Отдышись пока, только воды не пей, - видя, вОды || почти не требовал воды, а сейчас всё вОды || причем не просто воды, а сладкой. И вОды || пыталась залить пригоршнями воды огонь. вОды || разоружили, не давали воды и еды, держали вОды || раскрасневшиеся, с каплями воды на загорелом теле, вОды || расслабятся, перекусят и воды попьют. Они пошли вОды || с несколькими глоткАмиъ воды. Но это не вОды || содержащейся в чашке воды. Дело в ощущении водЫ || сразу несколько кружек воды. вОды || сразу предупредил, что воды мало - водопровод не вОды || Среди пены и воды мелькали толстые щупальцеподобные вОды || Тело категорически требовало воды. Пришлось идти в вОды || Тит попросил воды. Небесный подумал о вОды || только одно. Следы воды на теле отсутствуют. вОды || участки травы и воды. Вот эскалатор, ведущий вОды || хотя утекло немало воды.
#(?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А-яЁё]+" это любые символы из перечня, с учётом регистра букв, в количестве более одного.
Как я понял это чтение диалогов двумя голосами. Отличный режим для оживления Николая. Можно настроить тембр, скорость чтения в диалогах. ТО есть, к примеру, первый голос читает выше и быстрее (вопрошает), а второй басовитее и медленнее (отвечает раздумывая не поставленный вопрос).
Все даты в формате GMT
3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет