Regex для нахождения A и не B на строке

Я ищу regex для поиска моей программы Python для нахождения всех строк где foo, но нет bar, передается в метод как аргумент ключевого слова. Я играю вокруг с предвидением и lookbehind утверждениями, но не имею много удачи.

Какая-либо справка?

Спасибо

5
задан Zach 9 April 2010 в 20:09
поделиться

3 ответа

Если у вас есть строка foo , которую вы хотите найти, и другая строка bar , которая не должна присутствовать, вы можете использовать это:

^(?!.*bar).*foo

Создание регулярного выражения, которое точно выполнить все ваши требования очень сложно, поскольку код Python не является обычным языком, но, надеюсь, вы сможете использовать его в качестве отправной точки, чтобы получить что-то достаточно хорошее для ваших нужд.

10
ответ дан 18 December 2019 в 11:55
поделиться

Вы также можете сделать это не с помощью regex:

for line in file:
    if "foo" in line and "bar" not in line:
        #do something
1
ответ дан 18 December 2019 в 11:55
поделиться

Наличие ^ после заголовочных знаков в таких сценариях всегда кажется мне более эффективным. Читая это, я тоже вижу больше смысла.

(?!.*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
4
ответ дан 18 December 2019 в 11:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: