@tomatenshi
Frontend разработчик

Можно ли как то упростить регулярное выражение вида ^(.*\s|.*[^а-яА-ЯёЁ]|.{0})(МКУ|ИП)(\s.*|.*[^а-яА-ЯёЁ]|.{0})$?

Я написала регулярку, она работает, но выглядит некрасиво
^(.*\s|.*[^а-яА-ЯёЁ]|.{0})(МКУ|ИП)(\s.*|.*[^а-яА-ЯёЁ]|.{0})$

Задача такая: в строке надо найти соответствие ИП или МКУ, при чём так что
1. Если перед МКУ|ИП есть другие русские буквы, то перед МКУ|ИП должен быть пробел
2. Если после МКУ|ИП есть другие русские буквы, то после МКУ|ИП должен быть пробел
3. Строка может быть простой "МКУ" или "ИП"
4. МКУ|ИП может стоять в начале или конце строки
5. Вокруг МКУ|ИП могут быть кавычки или другие нерусские символы

Примеры с ИП
1. true: "Саша ИП" false: "СашаИП"
2. true: "ИП Саша" false: "ИПСаша"
3. true: "ИП"
4. true: "Саша Иванов ИП" false: "Саша ИвановИП"
5. true: "ИП'Саша'"
5. true: "@ИП@"
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
@tomatenshi Автор вопроса
Frontend разработчик
В итоге общенародной помощи вышло вот это =)
( ^ | [^а-яА-ЯёЁ] ) (МКУ|ИП) ( ?![а-яА-ЯёЁ] )
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@kudis
Bitrix developer
(^|\s)(МКУ|ИП)($|\s)

Итак:
ИП Саша - true
ИПСаша - false
МКУ Саша - true
MKУСаша - false
ЭтоМКУ Саша - false
Это МКУ Саша - true

Я правильно понял задачу?
Ответ написан
@shmaroder
https://creditpower.ru
Первый закон программирования:
1. Если что-то работает не трогай это.

Приведите примеры строк по вашим номерам. Так проще будет понять задачу.
1....
2...
...
5...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы