Как в regexp отрицать буквосочетание внутри слова?

программирование regexp регулярное выражение замена слов FoxReplace

Нужно чтобы менялись окончания "йся" на "йтесь", но если перед "й" не идёт "ши".

Это всего лишь как пример. (!!! я слегка всё упростил) Он работает через отрицание одиночной буквы "и" перед "й": /([!и])йся/йтесь/ Интересует как в круглых скобках отрицать именно сочетание букв, а не одну букву, как удалось в символьном классе. (для других случаев замены)

------------------

Проверяю на тексте, содержащем:
"улыбайся укройся согрейся славившийся."
должно получаться:
"улыбайтесь укройтесь согрейтесь славившийся.".

В дополнении FoxReplace для Firefox это работает так:
([^и])йся заменять на $1йтесь


Примечание:
19.02.13 Без имени, спасибо за ответ! Жаль не сработало в вышеуказанном FF-дополнении (там есть ограничения). Выберу ответ лучшим как только испробую в нормальной "регулярке".
Ответы:
Используйте negative lookbehind.
/(?<!ши)йся/


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.