[ID CC-CC2022] Греп для последней буквы в слове

Статус
Закрыто для дальнейших ответов.

Shadow_Cluster

Участник
Топикстартер
Сообщения
28
Реакции
0
Ребята, помогите, плиз, с выражением. Есть проблема, очень много слов кириллицей, у которых в конце стоит латинская буква i или p (не суть важно). Вот эти буквы мне надо поднят в верхний регистр. Для поиска последней буквы в слове я надыбал такое выражение [\l]{1}(?=\s)
И всё бы ничего, но... Мне нужно найти именно эти конкретные буквы, а не просто последние. Плюс ко всему в тексте присутствует не только кириллица, но и куча латинских слов, которые могут заканчиваться на эти буквы. А вот их как раз трогать нельзя. Только у кириллических слов, у которых в конце латинские (i,p).
Если наглядно, то надо, например, в слове словоi или словоp поднять верхний регистр последние буквы. При этом слова, например, stop или daikiri должны игнорироваться.
Как можно домодифицировать такое выражение? 'alil'
 
Последнее редактирование:
  • Спасибо
Реакции: Shadow_Cluster
А, нет. Такой запрос зацепит одинокие буквы i и p, сорри.
Тогда лучше вот так:
(?<=[а-яА-ЯёЁ])[ip]\>
 
Вы маг и чародей, профессор :)
Книксен.gif

Только лучше использовать второй запрос, а то I пострадает:
 
А, нет. Такой запрос зацепит одинокие буквы i и p, сорри.
Тогда лучше вот так:
(?<=[а-яА-ЯёЁ])[ip]\>
а как еще можно дополнить это выражение, если встречается еще вот такая гадость словоi,p и словоi&p '%)'
 
а как еще можно дополнить это выражение, если встречается еще вот такая гадость словоi,p и словоi&p '%)'
А что с этой гадостью планируется делать? Всё равно надо поднять только последние буквы?
 
Можно попробовать вот так
(?<![a-zA-Z ])[ip](?=[[:punct:]]?[[:space:]])
 
Да, надо поднять целиком в регистр в месте с запятой или &. Так не работатет, все равно ищет только последнюю букву.
Проще сделать вторым проходом для этих случаев
(?<=[а-яА-ЯёЁ])i[[:punct:]]p\>
 
Ой, можно ещё вопрос, раз уж мне сегодня так повезло? :)
У меня попадаются слова с ударениями, где при автоматической расстановке переносов получается, что ударение переносится на следующую строку, и строка в итоге начинается с ударения. Как можно в поиск такое задать, чтобы потом назначить, например, "непереносимость" слова )))))
 
Можно)
Но мне нужен кусок текста с ударениями, чтобы знать, что отлавливать.
Нужно прямо убить вообще переносимость всего слова? Или просто поставить на место знаки ударения?
 
В идеале подтянуть к букве, которая осталась на верхней строчке. Просто бывают длинные слова, которые потом сложно сжимать/растягивать, если не переносить.
 
По идее всё должно получится при такой схеме:
1569950758441.png

Вместо "знак_ударения" надо вставить из текста собственно Ваш знак. С ударениями бывают вариации, поэтому я не хочу гадать, какой именно Вы используете.
 
Нашло пару заглавных букв А под ударением. Ну и ладно, в принципе, таких косяков с ударениями немного, можно глазками высмотреть. Еще раз огромное спасибо за помощь!
 
Нашло пару заглавных букв А под ударением. Ну и ладно, в принципе, таких косяков с ударениями немного, можно глазками высмотреть. Еще раз огромное спасибо за помощь!
Странно, должно было все буквы найти. Точно конструкция выглядела вот так:
[\l\u]
?
 
Это я палочку на скриншоте неверно интерпретировал :) Так работает. Правда действительно ищет все ударные, но мне реально нужны только те, у которых ударение свалилось на новую строку. А то мне если автоматом на все ударения поставить ноубрейк, то хаос поглотит мой словарь )))))). Так что те пару штук я так высмотрю, аналогово, глазами ))) Спасибо!
 
А то мне если автоматом на все ударения поставить ноубрейк, то хаос поглотит мой словарь ))))))
Так по идее он запретит разрываться только парочке «буква+ударение», а не всему слову.
 
А что означает $0? А то у меня так и заменяет букву с ударением на $0 '))'. Или это не ноль и не доллар? Я уже перегрелся наверное )))
 
Статус
Закрыто для дальнейших ответов.