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

bizzon

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

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


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

z@jivalo

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

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

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

bizzon

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

Lite

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

z@jivalo

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

bizzon

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

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

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


79371
 

The_vAe

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

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

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


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

Roman48

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

nicanil

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

bizzon

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

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