Форум » Справочная » Регулярные выражения » Ответить

Регулярные выражения

Алексей: Доброе время суток! Не могу разобраться с регулярными выражениями. Если не сложно, напишите здесь примеры каких нибудь полезных регулярных выражений... Заранее благодарю!

Ответов - 57, стр: 1 2 3 All

wasyaka: Спасибо. вОды || а в брызгах воды сверкала радуга. Себя вОды || в трюме, где воды - несколько несчастных кубометров? вОды || вЕчераъ не могли воды набрать, чтобы пораньше вОды || вшестером без продовольствия, воды и связи с вОды || доложишь. А насчет воды пошли к нам вОды || зеленом колеблющемся полумраке воды маячили лИцаъ людей, вОды || И дай человеку воды, твою мать, - он вОды || И пусть бойцы воды побольше натаскают. Всеъ вОды || из за отсутствия воды. вОды || море исчезла полусфера воды, - и по сей водЫ || набрал из крана воды - казалось, у него вОды || наличии продовольствия и воды. Его группа выросла вОды || напоминал кошмарные видЕния. воды недоставало. Люди, исхудавшие вОды || ним, блестя капельками воды, подошли Жмакин и вОды || Отдышись пока, только воды не пей, - видя, вОды || почти не требовал воды, а сейчас всё вОды || причем не просто воды, а сладкой. И вОды || пыталась залить пригоршнями воды огонь. вОды || разоружили, не давали воды и еды, держали вОды || раскрасневшиеся, с каплями воды на загорелом теле, вОды || расслабятся, перекусят и воды попьют. Они пошли вОды || с несколькими глоткАмиъ воды. Но это не вОды || содержащейся в чашке воды. Дело в ощущении водЫ || сразу несколько кружек воды. вОды || сразу предупредил, что воды мало - водопровод не вОды || Среди пены и воды мелькали толстые щупальцеподобные вОды || Тело категорически требовало воды. Пришлось идти в вОды || Тит попросил воды. Небесный подумал о вОды || только одно. Следы воды на теле отсутствуют. вОды || участки травы и воды. Вот эскалатор, ведущий вОды || хотя утекло немало воды. добавил к этому: #(?i)(?<=(2|блеск|бутыл[ко]|глоток|глотков|запас|кружк|литр|напи(л|ться)|пленк|стакан)[^\.,!?-]{0,30})\bводы\b=воды< получилось: #(?i)(?<=(2|блеск|бутыл[ко]|глот(кам|ками|ков|ок)|запас|капельками|капл(ей|ю|я|ями)|кран|круж(ек|ка|ке|ку)|литр|напи(лись|лся|ться)|насчет|отсутстви(ем|и|ю|я)|немало|пены|пленк|полумра(ке|ку)|полусфера|попросил|пригоршнями|продовольствия|продовольствия\,|просто|след|стакан|травы|требова(л|ла|ли|ло|лось)|чашк(а|е|и|ой|у)|челове(ка|ком|ку))[^\.,!?-]{0,30})\bводы\b=водЫ к Возможно ли прикрутить запятую , чтоб не дублировать слово. И тире заодно?

odinokiyklaus: Речь идёт о Николае? |продовольствия\,| - запятую экранировать не надо - это не оператор типа точки, а просто один из символов. Прикрутить запятую можно, как напишете так и будет искать 2| - по моему бессмысленный оператор. "2 капли воды" что-ли? может всё-таки так "две капли воды" (ек|ка|ке|ку) - оператор скобки выделяет память для обработки, чтобы к этому фрагменту можно было обратиться позднее ($1 - после знака равно стоит обращение к скобкам 1 и т.п.) оператор перечня памяти не выделяет. я бы написал лучше так - [каеу]{2} и добавил бы еще окончаний: кой ками ках. В итоге получилось бы [каеойумих]{2,4} wasyaka пишет: Возможно ли прикрутить запятую , чтоб не дублировать слово. И тире заодно? не понял вопроса. Кажется догадался. Это |продовольствия\,| можно так написать |продовольствия[,]?| [,]? - ноль или один раз из перечня

odinokiyklaus: wasyaka пишет: И внекоторых рег. выражениях добавлен Ъ: Лично я в своих правилах Ъ знак добавляю за тем, чтобы последующие выражения не смогли второй раз обработать искомое слово. Тут требуется пояснение. В KoobAudio реализованая великолепная задумка (подробнее смотри справку) - любые выражения, расположенные в словарях в основной папке (то есть не в папках 1 и 2), слово которое уже было обработано проигнорируют. Однако, обработка уже обработанного слова сможет и будет сделана в папке постобработки (папке 2). Чтобы этого не было сделано лично я вставляю перед знаком ударения Ъ знак. То есть делаю выражения такого типа #(?i)(?<=\b((без|возле|мимо|выше|ниже|дальше|ближе|для|до|из|оба|от|с|у|вместо|вдоль|вглубь|внутр[ьи]|снаружи|вне|вокруг|около|кроме|глубине|посреди|напротив|против|всего|из([ -]за|[ -]под)?|нет|ни|об[ае]|дв[ае]|три|четыре|одной|другой|первой|второй|следующей)\s(его|е[её]|их|моей|твоей|своей|нашей|моего|твоего|своего|нашего|того|этого|сего|той)?)\b[^\.,!?-]{0,1})\bадреса\b=аъ<дреса


wasyaka: odinokiyklaus Большое спасибо. Вопрос: ...|год|давлени[емюя]{1,2}....{0,30})\bвойны\b=войнЫ сработало: давлением войнЫ, -- годы войнЫ; годом войнЫ удалил квадратно-фигурные скобки, оставил: |давлени| -- результат тотже. т.е в скобках только заданные окончания, а если без них, то слово получается"безконечным"? В смысле сработает на непонятно что(годные и т.д.?

odinokiyklaus: Можно всё увидеть выражение?

wasyaka: #(?i)(?<=\b(алтар|\bдве\b|близос[итью]{2,3}|будто|вопрос|год|давлени|дат[аеуой]{1,2}|демон|день|дн|задач|зако[ануыомих]{1,}|истори[ийюя]|командор|круговорот|мастер|машин|месяц|навык|начал|недел|окончани|отголоск[иахом]{1,2}|перво[гйо]{2}|пепл|период|планетарий|после|правд|реали[ий]|середин|сердц|судьб[аыойюе]{1,2}|\bтри\b|тягот|тяжест|хо[дуеы]{1,2}|утечк|ча[сыамов]{1,2,3|}хотел|)[^\.,!?-]{0,30})\bвойны\b=войнЫ

odinokiyklaus: Понятно. Искомое выражение у вас такое wasyaka пишет: #(?i)(?<=\b(алтар|\bдве\b|близос[итью]{2,3}|будто|вопрос|год|давлени|дат[аеуой]{1,2}|демон|день|дн|задач|зако[ануыомих]{1,}|истори[ийюя]|командор|круговорот|мастер|машин|месяц|навык|начал|недел|окончани|отголоск[иахом]{1,2}|перво[гйо]{2}|пепл|период|планетарий|после|правд|реали[ий]|середин|сердц|судьб[аыойюе]{1,2}|\bтри\b|тягот|тяжест|хо[дуеы]{1,2}|утечк|ча[сыамов]{1,2,3|}хотел|)[^\.,!?-]{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=войнЫ то у вас будет находить только выражения "близости войны" "близостью тратата войны" и т.д.

odinokiyklaus: Заметил ошибки |утечк|ча[сыамов]{1,2,3|}хотел|) |утечк|ча[сыамов]{1,2,3|}хотел|) Так писать нельзя. Можно так {1,2} -"от одного до двух", {1,3} "от одного до трёх". Но не так - {1,2,3} Внутри квантификатора {} симол | не допускается. Можно только одну или дву цифры и запятую - {2} {,6} {5,} {5,10}. хотел|) посли хотел идет | и правая скобка. Раз между ними нет символа - то значит будет обрабатываться "пустой" - читай любой симсол. Такие выраджения типа этого (хотел|) вообще недопустимы То есть пример выражение #(?i)(?<=\b(хотел|)\b[^\.,!?-]{0,30})\bвойны\b=войны найдет не только хотел войны но и хотелтратата войны так как обработает пустой симовол |) в количестве от нуля до 30-ти раз. Вот как правильно отработает

wasyaka: odinokiyklaus Спасибо за ученье.

wasyaka: odinokiyklaus Спасибо за ученье. Если интересно: Это .chisla.rex из балаболки https://yadi.sk/d/FqhjDZs6uQQS5 Работает эффективней чем "числительные". если сможете и интересно - алгоритм замен .рекс в дик.

odinokiyklaus: Перевел ваш словарь из rex в dic Алгоритм 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 Пользуйтесь на здоровье!

odinokiyklaus: Забыл добавить. Чтобы числительные работали корректно, этот словарь должен быть помещён только в паку 1 (папка предварительной обработки). В общей папке (где по умолчанию лежит словарь Числительные.dic) новый словарь не будет правильно работать. Словарь Числительные_KoobAudio можно отключить, а можно и оставить. P.S. Чтение чисел стало значительно лучше (использую оба словаря), но время обработки заметно увеличилось. Но пока это не критично.

wasyaka: odinokiyklaus Ещё раз(неоднократно) спасибо. Вопросы:(ко всем пользователям) 1.Возможно ли прописать(рег), чтобы после названия книги, главы и т.д. ставилась точка? Чтоб читалось раздельно? Владимир Стрельников Ссыльнопоселенец 2.Возможно ли в KooBAudio применить теги для смены голоса(прочтение сносок, антоннация ит.д.) <VOICE REQUIRED="NAME=IVONA 2 Tatyana OEM"> (текст) </VOICE> (это Балаболка и MP3book2005)

MoppoH2: wasyaka пишет: 1.Возможно ли прописать(рег), чтобы после названия книги, главы и т.д. ставилась точка? Чтоб читалось раздельно? (?m)([А-я])$=$1.

wasyaka: MoppoH2 пишет: wasyaka пишет:  цитата: 1.Возможно ли прописать(рег), чтобы после названия книги, главы и т.д. ставилась точка? Чтоб читалось раздельно? (?m)([А-я])$=$1. Не работает. Для балаболки в rex методом тыка подобрал ([A-Za-zА-яЁё])(\r)=$1.

odinokiyklaus: wasyaka пишет: 2.Возможно ли в KooBAudio применить теги для смены голоса(прочтение сносок, антоннация ит.д.)  цитата: <VOICE REQUIRED="NAME=IVONA 2 Tatyana OEM"> (текст) </VOICE> (это Балаболка и MP3book2005) Режим Билингво пробовали? Может там это уже реализовано? (сразу скажу, я не пробовал).

wasyaka: odinokiyklaus пишет: ежим Билингво пробовали? Может там это уже реализовано? (сразу скажу, я не пробовал). Билингво - это чтение латиницы. в словаре 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-х (Игнор первой цифры) #(\d+)(\-)(\d+)([A-Za-zА-яЁё]+)=$1$4 $3$4 #(\d+)(\-)(\d+)(\-)([A-Za-zА-яЁё]+)=$1$4$5 $3$4$5 Срабатывает, но длинный пробел(2или3) и ]+) - его роль? и// Коррекция омографов #(?-i)\bАдреса\b=адреса #(?-i)([а-я]) \bАнгара\b=$1 АнгарА #(?-i)([а-я]) \bангара\b=$1 ангАра #(?-i)\bАнгара\b=ангара #(?-i)([а-я]) \bАнгаре\b=$1 АнгарЕ #(?-i)([а-я]) \bангаре\b=$1 ангАре #(?-i)\bАнгаре\b=ангаре #(?-i)([а-я]) \bАнгару\b=$1 АнгарУ #(?-i)([а-я]) \bангару\b=$1 ангАру #(?-i)\bАнгару\b=ангару #(?-i)([а-я]) \bАнгары\b=$1 АнгарЫ #(?-i)([а-я]) \bангары\b=$1 ангАры #(?-i)\bАнгары\b=ангары #(?-i)([а-я]) \bБаку\b=$1 БакУ #(?-i)([а-я]) \bбаку\b=$1 бАку #(?-i)\bБаку\b=баку #(?-i)([а-я]) \bВали\b=$1 ВАли #(?-i)([а-я]) \bвали\b=$1 валИ #(?-i)\bВали\b=вали #(?-i)([а-я]) \bВарвары\b=$1 ВарвАры #(?-i)([а-я]) \bварвары\b=$1 вАрвары #(?-i)\bВарвары\b=варвары #(?-i)([а-я]) \bВари\b=$1 ВАри #(?-i)([а-я]) \bвари\b=$1 варИ #(?-i)\bВари\b=вари #(?-i)([а-я]) \bВарю\b=$1 ВАрю #(?-i)([а-я]) \bварю\b=$1 варЮ #(?-i)\bВарю\b=варю #(?-i)([а-я]) \bВаря\b=$1 ВАря #(?-i)([а-я]) \bваря\b=$1 варЯ #(?-i)\bВаря\b=варя #(?-i)([а-я]) \b\Волковb=$1 ВОлков #(?-i)([а-я]) \bволков\b=$1 волкОв #(?-i)\b\Волковb=волков #(?-i)([а-я]) \bГоспода\b=$1 ГОспода #(?-i)([а-я]) \bгоспода\b=$1 господА #(?-i)\bГоспода\b=господа #(?-i)\bЕгеря\b=егеря #(?-i)\bЕдим\b=едим #(?-i)\bЕду\b=еду #(?-i)\bЕлей\b=елей #(?-i)([а-я]) \bЖене\b=$1 ЖЕне #(?-i)([а-я]) \bжене\b=$1 женЕ #(?-i)\bЖене\b=жене #(?-i)([а-я]) \bЖеню\b=$1 ЖЕню #(?-i)([а-я]) \bженю\b=$1 женЮ #(?-i)\bЖеню\b=женю #(?-i)([а-я]) \bЖуков=$1 ЖУков #(?-i)([а-я]) \bжуков\b=$1 жукОв #(?-i)\bЖуков=жуков #(?-i)\bИванов\b=иванов #(?-i)\bИглы\b=иглы #(?-i)\bИгры\b=игры #(?-i)\bИзбегавший\b=избегавший #(?-i)\bИзбы\b=избы #(?-i)\bИзверг\b=изверг #(?-i)\bИзложите\b=изложите #(?-i)\bИзменитесь\b=изменитесь #(?-i)\bИзмениться\b=измениться #(?-i)\bИзменяться\b=изменяться #(?-i)\bИкры\b=икры #(?-i)\bИстому\b=истому #(?-i)([а-я]) \bКатя\b=$1 КАтя #(?-i)([а-я]) \bкатя\b=$1 катЯ #(?-i)\bКатя\b=катя #(?-i)([а-я]) \bКольца\b=$1 кольца #(?-i)Кольца ([А-Я])=кОльца $1 #(?-i)\bКольца\b=кольца #(?-i)([а-я]) \bКолю\b=$1 КОлю #(?-i)([а-я]) \bколю\b=$1 колЮ #(?-i)\bКолю\b=колю #(?-i)Лица ([А-Я])=ЛицА $1 #(?-i)([а-я]) \bЛуки\b=$1 ЛукИ #(?-i)([а-я]) \bлуки\b=$1 лУки #(?-i)(\bЛуки\b=луки #(?-i)([а-я]) \bМаксиме\b=$1 МаксИме #(?-i)([а-я]) \bмаксиме\b=$1 мАксиме #(?-i)\bМаксиме\b=максииме #(?-i)([а-я]) \bМарселя\b=$1 МарсЕля #(?-i)([а-я]) \bмарселя\b=$1 марсЕля #(?-i)\bМарселя\b=марселя #(?-i)([а-я]) \bМастера\b=$1 МАстера #(?-i)([а-я]) \bмастера\b=$1 мастера #(?-i)\bМастера\b=мастера #(?-i)([а-я]) \bМаши\b=$1 МАши #(?-i)([а-я]) \bмаши\b=$1 машИ #(?-i)\bМаши\b=маши #(?-i)([а-я]) \bМашина\b=$1 МАшина #(?-i)([а-я]) \bмашина\b=$1 машИна #(?-i)\bМашина\b=машина #(?-i)([а-я]) \bМашину\b=$1 МАшину #(?-i)([а-я]) \bмашину\b=$1 машИну #(?-i)\bМашину\b=машину #(?-i)\bОбитая\b=обитая #(?-i)\bОблака\b=облака #(?-i)\bОблачка\b=облачка #(?-i)\bОбломиться\b=обломиться #(?-i)\bОбману\b=обману #(?-i)\bОбмер\b=обмер #(?-i)\bОбнимите\b=обнимите #(?-i)\bОбразными\b=образными #(?-i)\bОбручу\b=обручу #(?-i)\bОбсыпав\b=обсыпав #(?-i)\bОбходите\b=обходите #(?-i)\bОвцы\b=овцы #(?-i)\bОдержим\b=одержим #(?-i)\bОзера\b=озера #(?-i)\bОзерца\b=озерца #(?-i)\bОкажите\b=окажите #(?-i)\bОкажитесь\b=окажитесь #(?-i)\bОкна\b=окна #(?-i)\bОкруга\b=округа #(?-i)\bОкруге\b=округе #(?-i)\bОплачу\b=оплачу #(?-i)\bОпустите\b=опустите #(?-i)\bОрдена\b=ордена #(?-i)\bОрдера\b=ордера #(?-i)\bОрды\b=орды #(?-i)\bОсел\b=осел #(?-i)\bОстановитесь\b=остановитесь #(?-i)\bОстрова\b=острова #(?-i)\bОстроты\b=остроты #(?-i)\bОсушите\b=осушите #(?-i)\bОсы\b=осы #(?-i)\bОсыпаться\b=осыпаться #(?-i)\bОтбегали\b=отбегали #(?-i)\bОтбегаю\b=$отбегаю #(?-i)\bОтводите\b=отводите #(?-i)\bОтложите\b=отложите #(?-i)\bОтмели\b=отмели #(?-i)\bОтмените\b=отмените #(?-i)\bОтносите\b=относите #(?-i)\bОтогнут\b=отогнут #(?-i)\bОтпадал\b=отпадал #(?-i)\bОтползавшим\b=отползавшим #(?-i)\bОтпуска\b=отпуска #(?-i)\bОтпустите\b=отпустите #(?-i)\bОтсек\b=отсек #(?-i)\bОтсеку\b=отсеку #(?-i)\bОтсыпал\b=отсыпал #(?-i)\bОтсыпаться\b=отсыпаться #(?-i)\bОтучиться\b=отучиться #(?-i)\bОтходите\b=отходите #(?-i)([а-я]) \bРогов\b=$1 РОгов #(?-i)([а-я]) \bрогов\b=$1 рогОв #(?-i)\bРогов\b=рогов #(?-i)([а-я]) \bРостовом\b=$1 РостОвом #(?-i)([а-я]) \bростовом\b=$1 ростовОм #(?-i)\bРостовом\b=ростовом #(?-i)\bСаньки\b=саньки #(?-i)\bСаньку\b=саньку #(?-i)([а-я]) \bСахаре\b=$1 СахАре #(?-i)([а-я]) \bсахаре\b=$1 сАхаре #(?-i)\bСахаре\b=сахаре #(?-i)([а-я]) \bСвету\b=$1 СвЕту #(?-i)([а-я]) \bсвету\b=$1 светУ #(?-i)\bСвету\b=свету #(?-i)([а-я]) \bТолика\b=$1 ТОлика #(?-i)([а-я]) \bтолика\b=$1 толИка #(?-i)\bТолика\b=толика #(?-i)([а-я]) \bТолстой\b=$1 ТолстОй #(?-i)([а-я]) \bтолстой\b=$1 тОлстой #(?-i)\bТолстой\b=толстой #(?-i)([а-я]) \bТома\b=$1 ТОма #(?-i)([а-я]) \bтома\b=$1 томА #(?-i)\bТома\b=тома #(?-i)\bУгольная\b=угольная #(?-i)\bУгольно\b=угольно #(?-i)\bУгольного\b=угольного #(?-i)\bУгольное\b=угольное #(?-i)\bУгольной\b=угольной #(?-i)\bУгольном\b=угольном #(?-i)\bУгольному\b=угольному #(?-i)\bУгольную\b=угольную #(?-i)\bУгольные\b=угольные #(?-i)\bУгольный\b=угольный #(?-i)\bУгольных\b=угольных #(?-i)\bУдалой\b=удалой #(?-i)\bУдержи\b=удержи #(?-i)\bУдержите\b=удержите #(?-i)\bУдержитесь\b=удержитесь #(?-i)\bУзами\b=узами #(?-i)\bУзды\b=узды #(?-i)\bУзнаем\b=узнаем #(?-i)\bУзнает\b=узнает #(?-i)\bУзнаете\b=узнаете #(?-i)\bУзнаешь\b=узнаешь #(?-i)\bУзнаю\b=узнаю #(?-i)\bУколов\b=уколов #(?-i)\bУложитесь\b=уложитесь #(?-i)\bУносите\b=уносите #(?-i)\bУпустите\b=упустите #(?-i)\bУстали\b=устали #(?-i)\bУстановите\b=установите #(?-i)\bУстою\b=устою #(?-i)\bУтопает\b=утопает #(?-i)\bУтопал\b=утопал #(?-i)\bУтопала\b=утопала #(?-i)\bУтра\b=утра #(?-i)\bУха\b=уха #(?-i)\bУхе\b=ухе #(?-i)\bУхи\b=ухи #(?-i)\bУходите\b=уходите #(?-i)\bУху\b=уху #(?-i)\bУчащая\b=учащая #(?-i)\bУчителя\b=учителя #(?-i), щеки ([А-Я])=, щёки $1 #(?-i)\bЭлектроплиты\b=электроплиты #(?-i)\bЭлектропровода\b=электропровода #(?-i)\bЮга\b=юга #(?-i)\bЮнкера\b=юнкера #(?-i)\bЯву\b=яву #(?-i)\bЯдра\b=ядра #(?-i)\bЯйца\b=яйца #(?-i)\bЯкоря\b=якоря // Навроде контрольной в школе...

odinokiyklaus: 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>)(ом на ого) Я римскими числами из этого словаря вообще не пользуюсь. Меня напрягает, что из-за этих правил обработки римских чисел каждый введёный символ обрабатывается. Для себя я сделал по другому - перед словарем обработки чисел задал свои правила перевода римских чисел в арабские. И стало всё гораздо лучше. #(?-i)\b(XXXIX)\b=39<рим.ч.> #(?-i)\b(XXXVIII)\b=38<рим.ч.> #(?-i)\b(XXXVII)\b=37<рим.ч.> #(?-i)\b(XXXVI)\b=36<рим.ч.> #(?-i)\b(XXXV)\b=35<рим.ч.> #(?-i)\b(XXXIV)\b=34<рим.ч.> #(?-i)\b(XXXIII)\b=33<рим.ч.> #(?-i)\b(XXXII)\b=32<рим.ч.> #(?-i)\b(XXXI)\b=31<рим.ч.> #(?-i)\b(XXX)\b=30<рим.ч.> #(?-i)\b(XXIX)\b=29<рим.ч.> #(?-i)\b(XXVIII)\b=28<рим.ч.> #(?-i)\b(XXVII)\b=27<рим.ч.> #(?-i)\b(XXVI)\b=26<рим.ч.> #(?-i)\b(XXV)\b=25<рим.ч.> #(?-i)\b(XXIV)\b=24<рим.ч.> #(?-i)\b(XXIII?)\b=23<рим.ч.> #(?-i)\b(XXII)\b=22<рим.ч.> #(?-i)\b(XXI)\b=21<рим.ч.> #(?-i)\b(XX|ХХ)\b=20<рим.ч.> #(?-i)\b(XIX)\b=19<рим.ч.> #(?-i)\b(XVIII)\b=18<рим.ч.> #(?-i)\b(XVII)\b=17<рим.ч.> #(?-i)\b(XVI)\b=16<рим.ч.> #(?-i)\b(XV)\b=15<рим.ч.> #(?-i)\b(XIV)\b=14<рим.ч.> #(?-i)\b(XIII)\b=13<рим.ч.> #(?-i)\b(XII)\b=12<рим.ч.> #(?-i)\b(XI)\b=11<рим.ч.> #(?-i)\b(X|Х)\b=10<рим.ч.> #(?-i)\b(IX)\b=9<рим.ч.> #(?-i)\b(VIII)\b=8<рим.ч.> #(?-i)\b(VII)\b=7<рим.ч.> #(?-i)\b(VI)\b=6<рим.ч.> #(?-i)\b(V)\b=5<рим.ч.> #(?-i)\b(IV)\b=4<рим.ч.> #(?-i)\b(III)\b=3<рим.ч.> #(?-i)\b(II)\b=2<рим.ч.> Кроме того, из-за этих "римских правил" обработка выражений типа при И. Ю. Петре VIII I.B.M. Company становится совсем безобразным. Я для себя решил эту проблему и теперь это тестовое выражение обрабатывается корректно.

odinokiyklaus: wasyaka пишет: Попытался улучшить навроде 40-41х и 40-41-х (Игнор первой цифры) #(\d+)(\-)(\d+)([A-Za-zА-яЁё]+)=$1$4 $3$4 #(\d+)(\-)(\d+)(\-)([A-Za-zА-яЁё]+)=$1$4$5 $3$4$5 В этом словаре это реализуется по-другому Нужно в словаре найти этот блок правил #(?-i)\b(\d)(\d)(\d)(\d)\s?\-\s?(\bый\b|\bй\b|\bого\b|\b\bому\b|\bым\b|\bм\b|\bя\b|\bй\b|\bю\b|\bе\b|\bх\b|\bые\b|\bми\b)=<скл.пор.числ.нач.> <10.3.$1.> <10.2.$2.> <10.1.$3.> <10.0.$4.$5> <скл.пор.числ.кон.> #(?-i)\b(\d)(\d)(\d)\s?\-\s?(\bый\b|\bй\b|\bого\b|\b\bому\b|\bым\b|\bм\b|\bя\b|\bй\b|\bю\b|\bе\b|\bх\b|\bые\b|\bми\b)=<скл.пор.числ.нач.> <10.2.$1.> <10.1.$2.> <10.0.$3.$4> <скл.пор.числ.кон.> #(?-i)\b(\d)(\d)(\d)\s?\-\s?(\bый\b|\bй\b|\bого\b|\b\bому\b|\bым\b|\bм\b|\bя\b|\bй\b|\bю\b|\bе\b|\bх\b|\bые\b|\bми\b)=<скл.пор.числ.нач.> <10.2.$1.> <10.1.$2.> <10.0.$3.$4> <скл.пор.числ.кон.> #(?-i)\b(\d)(\d)\s?\-\s?(\bый\b|\bй\b|\bого\b|\b\bому\b|\bым\b|\bм\b|\bя\b|\bй\b|\bю\b|\bе\b|\bх\b|\bые\b|\bми\b)=<скл.пор.числ.нач.> <10.1.$1.> <10.0.$2.$3> <скл.пор.числ.кон.> #(?-i)\b(\d)\s?\-\s?(\bый\b|\bй\b|\bого\b|\b\bому\b|\bым\b|\bм\b|\bя\b|\bй\b|\bю\b|\bе\b|\bх\b|\bые\b|\bми\b)=<скл.пор.числ.нач.> <10.0.$1.$2> <скл.пор.числ.кон.> и вставить перед ним дополнительный блок правил #(?-i)\b(\d)(\d)(\d)(\d)\s?\-\s?(\d)(\d)(\d)(\d)\s?\-\s?(\bый\b|\bй\b|\bого\b|\b\bому\b|\bым\b|\bм\b|\bя\b|\bй\b|\bю\b|\bе\b|\bх\b|\bые\b|\bми\b)=<скл.пор.числ.нач.> <10.3.$1.> <10.2.$2.> <10.1.$3.> <10.0.$4.$9> <скл.пор.числ.кон.>-<скл.пор.числ.нач.> <10.3.$5.> <10.2.$6.> <10.1.$7.> <10.0.$8.$9> <скл.пор.числ.кон.> #(?-i)\b(\d)(\d)(\d)\s?\-\s?(\d)(\d)(\d)\s?\-\s?(\bый\b|\bй\b|\bого\b|\b\bому\b|\bым\b|\bм\b|\bя\b|\bй\b|\bю\b|\bе\b|\bх\b|\bые\b|\bми\b)=<скл.пор.числ.нач.> <10.2.$1.> <10.1.$2.> <10.0.$3.$7> <скл.пор.числ.кон.>-<скл.пор.числ.нач.> <10.2.$4.> <10.1.$5.> <10.0.$6.$7> <скл.пор.числ.кон.> #(?-i)\b(\d)(\d)\s?\-\s?(\d)(\d)\s?\-\s?(\bый\b|\bй\b|\bого\b|\b\bому\b|\bым\b|\bм\b|\bя\b|\bй\b|\bю\b|\bе\b|\bх\b|\bые\b|\bми\b)=<скл.пор.числ.нач.> <10.1.$1.> <10.0.$2.$5> <скл.пор.числ.кон.>-<скл.пор.числ.нач.> <10.1.$3.> <10.0.$4.$5> <скл.пор.числ.кон.> #(?-i)\b(\d)\s?\-\s?(\d)\s?\-\s?(\bый\b|\bй\b|\bого\b|\b\bому\b|\bым\b|\bм\b|\bя\b|\bй\b|\bю\b|\bе\b|\bх\b|\bые\b|\bми\b)=<скл.пор.числ.нач.> <10.0.$1.$3> <скл.пор.числ.кон.>-<скл.пор.числ.нач.> <10.0.$2.$3> <скл.пор.числ.кон.> wasyaka пишет: Срабатывает, но длинный пробел(2или3) и ]+) - его роль? Длины пробел должен быть еще в самом начале обработки любых правил заменён коротким. Проверьте наличие правила в словаре чисел. Если его нет, то добавьте в самое его начало. #\—|\–=- Кстати эти тире — или – или - вовсе не обязательно экранировать (т.е. писать так \-). Эти знаки не являются спецсимволами. Так что если напишите просто правило #—|–=- то оно тоже сработает wasyaka пишет: [A-Za-zА-яЁё]+ Символы в квадратных скобках без знака (квантификатора) "+" или "*" - означает любой один! из перечисленных символов. Знак "+" после [] т.е. []+ - тоже самое что и []{1,} - то есть любой из символов в количестве больше одного (один или более символов). "*" - то же только "ноль или более символов" Таким образом выражение "[A-Za-zА-яЁё]+" это любые символы из перечня, с учётом регистра букв, в количестве более одного.

odinokiyklaus: wasyaka пишет: Билингво - это чтение латиницы. Как я понял это чтение диалогов двумя голосами. Отличный режим для оживления Николая. Можно настроить тембр, скорость чтения в диалогах. ТО есть, к примеру, первый голос читает выше и быстрее (вопрошает), а второй басовитее и медленнее (отвечает раздумывая не поставленный вопрос).



полная версия страницы