powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что-то я не понимаю в Regex. Отрицание вхождения последовательности символов
10 сообщений из 10, страница 1 из 1
Что-то я не понимаю в Regex. Отрицание вхождения последовательности символов
    #39740022
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Мне нужно получить Да, если некая последовательность символов не входит в проверяемую последовательность.
Вроде есть синтаксис с отрицанием вхождения последовательности.
Вот. Посмотрим. Пишут, что надо использовать отрицательный просмотр
http://qaru.site/questions/44535/regular-expressions-and-negating-a-whole-character-groupstatic
Признак отрицательного просмотра - пара символов ?!
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
void Main(string[] args)
        {
            string[] test = {"ab", "xy" }; //Тут надо искать
            Regex rYes =  new Regex("(ab)");
            Regex rNo = new Regex("(?!ab)");
            Regex[] reg = { rYes, rNo };
            foreach (string t in test)
            {
                Console.WriteLine($"===={t}===");
                foreach (Regex r in reg)
                {
                    bool b = rYes.IsMatch(t);
                    Console.WriteLine($"{t} имеет {r.ToString()}  как {b}");
                }
            }
            Console.ReadLine();
        }



Выдача

Код: plaintext
1.
2.
3.
4.
5.
====ab===
ab имеет (ab)  как True
ab имеет (?!ab)  как True 
====xy===
xy имеет (ab)  как False
xy имеет (?!ab)  как False

Никакой разницы, однако
...
Рейтинг: 0 / 0
Что-то я не понимаю в Regex. Отрицание вхождения последовательности символов
    #39740028
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bool b = rYes.IsMatch(t);
Маска всегда одна.
...
Рейтинг: 0 / 0
Что-то я не понимаю в Regex. Отрицание вхождения последовательности символов
    #39740033
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Да, если некая последовательность символов не входит в проверяемую последовательность.почему бы не инвертировать задачу, чтобы не возиться с просмотром?
Код: c#
1.
!Regex.IsMatch("abcdefg", "^.*cd.*$")
...
Рейтинг: 0 / 0
Что-то я не понимаю в Regex. Отрицание вхождения последовательности символов
    #39740037
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Супер_Павbool b = rYes.IsMatch(t);
Маска всегда одна.
Прошу прощения, действительно ошибся c показом.

Вот правильный текст
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
static void Main(string[] args)
        {
            string[] test = {"ab", "xy" };
            Regex rYes =  new Regex("(ab)");
            Regex rNo = new Regex("(?!ab)");
            Regex[] reg = { rYes, rNo };
            foreach (string t in test)
            {
                Console.WriteLine($"===={t}===");
                foreach (Regex r in reg)
                {
                    bool b = r.IsMatch(t);
                    Console.WriteLine($"{t} имеет {r.ToString()}  как {b}");
                }
            }
            Console.ReadLine();
        }


Выдача
Код: plaintext
1.
2.
3.
4.
5.
====ab===
ab имеет (ab)  как True
ab имеет (?!ab)  как True
====xy===
xy имеет (ab)  как False
xy имеет (?!ab)  как True


Все равно у проверяемой строки "ab" нет разницы в выдаче
...
Рейтинг: 0 / 0
Что-то я не понимаю в Regex. Отрицание вхождения последовательности символов
    #39740041
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Shocker.Proпочему бы не инвертировать задачу, чтобы не возиться с просмотром?
Чисто из вредности и перфекционизма. Если сказано, что должно решатся так, то почему я должен изобретать обходные пути?
...
Рейтинг: 0 / 0
Что-то я не понимаю в Regex. Отрицание вхождения последовательности символов
    #39740129
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Чисто из вредностиТогда смотри
Код: c#
1.
Regex.IsMatch("cd", "^(?!cd)$")

Выдает False, как ты и хотел.

В то же время
Код: c#
1.
Regex.IsMatch("cd", "(?!cd)")

Выдает True, потому что он находит нулевую последовательность символов, за которой не следует cd - имеет на это право


Просмотр вперед и просмотр назад как раз имеет глубокий смысл, когда есть нечто, относительно которого ты смотришь вперед или назад. Но если ты соизволил это нечто объявить как "ничего", то выражение и находит тебе это "ничего", за которым НЕ СЛЕДУЕТ строка "cd". Это видно при рассмотрении Match
...
Рейтинг: 0 / 0
Что-то я не понимаю в Regex. Отрицание вхождения последовательности символов
    #39740246
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напомнило, кстати
Код: c#
1.
Enumerable.Empty<int>().All(n => n == 5)

Все без студии знают результат выражения?
...
Рейтинг: 0 / 0
Что-то я не понимаю в Regex. Отрицание вхождения последовательности символов
    #39740248
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНапомнило, кстати
Код: c#
1.
Enumerable.Empty<int>().All(n => n == 5)


Все без студии знают результат выражения?вот же блин Linq))) Совсем другой стиль программирования),
...
Рейтинг: 0 / 0
Что-то я не понимаю в Regex. Отрицание вхождения последовательности символов
    #39740255
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНапомнило, кстати
Код: c#
1.
Enumerable.Empty<int>().All(n => n == 5)

Все без студии знают результат выражения?
И в SQL похожее есть:
Код: sql
1.
2.
3.
4.
5.
6.
;with cte(n) as (
  select v.n from (values(1), (2), (3)) v(n)
)
select *
from cte e
where e.n=all (select e2.n from cte e2)

и
Код: sql
1.
2.
3.
4.
5.
6.
;with cte(n) as (
  select v.n from (values(1), (2), (3)) v(n)
)
select *
from cte e
where e.n=all (select e2.n from cte e2 where 0=1)
...
Рейтинг: 0 / 0
Что-то я не понимаю в Regex. Отрицание вхождения последовательности символов
    #39740261
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Это не sql стандарт от 92 года)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что-то я не понимаю в Regex. Отрицание вхождения последовательности символов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]