JosiP JosiP - 26 days ago 21
Python Question

'negative' pattern matching in python

I have the following input,

OK SYS 10 LEN 20 12 43
1233a.fdads.txt,23 /data/a11134/a.txt
3232b.ddsss.txt,32 /data/d13f11/b.txt
3452d.dsasa.txt,1234 /data/c13af4/f.txt
.


And I'd like to extract all of the input except the line containing
"
OK SYS 10 LEN 20
" and the last line which contains a single
"."
(dot).
That is, I want to extract the following

1233a.fdads.txt,23 /data/a11134/a.txt
3232b.ddsss.txt,32 /data/d13f11/b.txt
3452d.dsasa.txt.1234 /data/c13af4/f.txt


I tried the following,

for item in output:
matchObj = re.search("^(?!OK) | ^(?!\\.)", item)
if matchObj:
print "got item " + item


but it does not work, as it does not produce any output.

Answer

See it in action:

matchObj = re.search("^(?!OK|\\.).*", item)

Don't forget to put .* after negative look-ahead, otherwise you couldn't get any match ;-)