Регулярное выражение с исключающим словом

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 089
Благодарностей
126
Баллы
63
Есть строки

синий красный зеленый желтый
малиновый зеленый синий пурпурный
золотистый фиолетовый синий желтый
золотистый фиолетовый желтый черный


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

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
798
Благодарностей
178
Баллы
43
Есть строки

синий красный зеленый желтый
малиновый зеленый синий пурпурный
золотистый фиолетовый синий желтый

Нужно регулярное выражение, чтобы бралась строка где есть слово "синий", но не было "малиновый"
Код:
^((?!малиновый).)*$
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 089
Благодарностей
126
Баллы
63
Код:
^((?!малиновый).)*$
Да, спасибо, понял с малиновым, но там нет синего, добавил еще одну строку в пример. И еще трудность, синий по отношению к малиновому не известно где, спереди или сзади.
Вообще, достаточно совпадения синего с исключающим малиновым, т.е. не обязательно всю строку.
Скриншот 2021-06-26 17.05.07.png
 
Последнее редактирование:

Lite

Client
Регистрация
17.10.2013
Сообщения
283
Благодарностей
89
Баллы
28
Возможно есть какое-то универсальное решение, но иногда проще на 2 регулярки разделить)
 

z@jivalo

Client
Регистрация
27.12.2016
Сообщения
798
Благодарностей
178
Баллы
43
если в одной строке будет и синий и малиновый это уже конфликт значений, регулярку надо разбирать на 2 части.
выражение выше, в него можно добавить слова как черный список, будет искать всё кроме тех строк которые указанны.
или переработать логику вашей реализации
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 089
Благодарностей
126
Баллы
63
Нужно одной, - Синий, но не Малиновый.

синий красный зеленый желтый
малиновый зеленый синий пурпурный
золотистый фиолетовый синий желтый
золотистый фиолетовый желтый черный

Это очень частый вариант, поиск слова с исключением.
Если будет решение, то вынесем как отдельный Снипет.


79371
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 445
Благодарностей
1 288
Баллы
113
Нужно одной, - Синий, но не Малиновый.

синий красный зеленый желтый
малиновый зеленый синий пурпурный
золотистый фиолетовый синий желтый
золотистый фиолетовый желтый черный

Это очень частый вариант, поиск слова с исключением.
Если будет решение, то вынесем как отдельный Снипет.


Посмотреть вложение 79371
Не проще вам будет сделать перебор строк на наличие слова?
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
742
Баллы
113
Они у тебя в списке, если нет, добавь в список, удали строки по регулярке \bмалиновый\b, да там даже регулярки не нужны, удалить строки содержащие малиновый, и получить строку содержащие слово синий
1624746110587.png1624746156968.png
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 804
Баллы
113
^(?=.*синий)(?!.*малиновый).*
 
  • Спасибо
Реакции: bizzon

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 089
Благодарностей
126
Баллы
63

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)