I'm looking for a regex to search my python program to find all lines where foo
, but not bar
, is passed into a method as a keyword argument. I'm playing around with lookahead and lookbehind assertions, but not having much luck.
Any help?
Thanks
I'm looking for a regex to search my python program to find all lines where foo
, but not bar
, is passed into a method as a keyword argument. I'm playing around with lookahead and lookbehind assertions, but not having much luck.
Any help?
Thanks
If you have a string foo
that you want to find and another string bar
that must not be present, you can use this:
^(?!.*bar).*foo
Creating a regular expression that exactly meets all your requirements is very difficult as Python code is not a regular language, but hopefully you should be able to use this as a starting point to get something good enough for your needs.
Having the ^
after the lookaheads in these scenarios always seems to work better for me. Reading it makes more sense to me, too.
(?!.*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
You could also do this with not a regex:
for line in file:
if "foo" in line and "bar" not in line:
#do something