RE2 / Perl RegEx, выбирая все строки без нескольких слов - PullRequest
1 голос
/ 08 апреля 2019

У меня проблемы с отрицательным прогнозом недоступности RE2. С обычным регулярным выражением я бы просто сделал что-то вроде этого:

^(?!text|someText|.*cont).*

Чтобы исключить строки, начинающиеся с "text", "someText" и содержащие "cont". К сожалению, негативная перспектива недоступна с RE2.

Как мы можем решить это?

1 Ответ

0 голосов
/ 08 апреля 2019

Вы можете справиться с отрицательными условиями прогнозирования, используя положительное совпадение, а затем ожидая отрицания этого. Например:

$input = "text is good";
if ($input !~ m/^(text|someText).*$/ && $input !~ m/^.*cont.*$/) {
    print "MATCH";
}
else {
    print "NO MATCH";
}
...