Я ищу regex для поиска моей программы Python для нахождения всех строк где foo
, но нет bar
, передается в метод как аргумент ключевого слова. Я играю вокруг с предвидением и lookbehind утверждениями, но не имею много удачи.
Какая-либо справка?
Спасибо
Если у вас есть строка foo
, которую вы хотите найти, и другая строка bar
, которая не должна присутствовать, вы можете использовать это:
^(?!.*bar).*foo
Создание регулярного выражения, которое точно выполнить все ваши требования очень сложно, поскольку код Python не является обычным языком, но, надеюсь, вы сможете использовать его в качестве отправной точки, чтобы получить что-то достаточно хорошее для ваших нужд.
Вы также можете сделать это не с помощью regex:
for line in file:
if "foo" in line and "bar" not in line:
#do something
Наличие ^
после заголовочных знаков в таких сценариях всегда кажется мне более эффективным. Читая это, я тоже вижу больше смысла.
(?!.*bar)^.*foo
this has a foo # pass
so does this has a foo # pass
i can haz foo # pass
but i haz foo and bar! # fail