Соответствует определенной строке текста, за которой НЕ следует другая конкретная строка с использованием регулярных выражений - PullRequest
0 голосов
/ 04 июля 2018

Пожалуйста, помогите мне выяснить следующее регулярное выражение:

У меня есть несколько текстовых файлов. Некоторые из этих файлов имеют следующие две строки текста:

Я скоро пойду домой

Завтра у меня выходной

Если первая строка существует, за ней всегда должна следовать вторая строка. Но иногда вторая строка отсутствует. Мне нужно искать те случаи, когда «я скоро ухожу домой», где после него нет строки «Я завтра беру выходной». Я использую поиск файлов в Eclipse. Поскольку он имеет поддержку регулярных выражений, я пытаюсь выяснить, как я могу сопоставить определенную строку, которая не следует за другой конкретной строкой, используя регулярное выражение.

Пожалуйста, поделитесь своими мыслями / решениями по этому поводу. С уважением.

1 Ответ

0 голосов
/ 04 июля 2018

https://regex101.com/r/f2GWfH/2

I am going home soon(?=\s+I am taking a day off tomorrow) Будет соответствовать

I am going home soon.
I am taking a day off tommorow

, но не просто I am going home soon. Он будет соответствовать I am going home soon., за которым следует I am taking a day off tommorow.

На оборотной стороне I am going home soon(?!\s+I am taking a day off tomorrow) Будет соответствовать I am going home soon., за которым не следует I am taking a day off tommorow

Они называются негативными и позитивными взглядами.

a(?=b) - это позитивный взгляд вперед, он соответствует ab или a, а затем b.

a(?!b) - это прогноз с отрицательным прогнозом, он соответствует ac или a, за которым не следует b.

В вашем случае отрицательный взгляд должен работать идеально:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...