Я искал вопросы как это, но все случаи, которые я нашел, были решены определенным для проблемы способом, как использование! g в vi для отрицания соответствий regex или соответствия другим вещам, без regex отрицания.
Таким образом я интересуюсь “чистым” решением этого:
Наличие ряда строк, я должен отфильтровать их с регулярным выражением matcher так, чтобы это только уехало (соответствует) строкам, испытывающим недостаток в данной подстроке. Например, отфильтровывание "Нечто" в:
Boo
Foo
Bar
FooBar
BooFooBar
Baz
Привел бы к:
Boo
Bar
Baz
Я пытался создать его с отрицательным взглядом aheads/behinds (?!regex)
/(?<!regex)
, но не мог понять это. Это даже возможно?
Попробуйте это регулярное выражение:
^(?:(?!Foo).)*$
Оно будет потреблять по одному символу за раз и проверит, нет ли впереди Foo. То же самое можно сделать и с отрицательным знаком:
^(?:.(?<!Foo))*$
Но вы также можете сделать то же самое без ссылок:
^(?:[^F]*|F(?:$|[^o].|o(?:$|[^o])))*$
Это соответствует любому символу, за исключением F или F, за которым либо не следует o, либо если за ним следует o, за которым не следует другой o.
.