Baf
Baf

Reputation: 2231

Regex matching - why does this not match and return None?

I don't understand why this simple regex match does not return a match object. It returns None what am I doing wrong?

I'm a total newby(started yesterday) and want to write a small program that searches folder trees for certain files, open these files and find certain lines in these files, and print the lines into a new file. To complete the first step I want to match the filenames returned by os.walk and match them with a a certain pattern. So right now I'm checking out how regexes work and to my understanding the code below should give a match, but when I print a I get None. I don't understand why, shouldn't it return any file starting with a 9?

import os, fnmatch, re
pattern = re.compile(r'^9')
teststring= "9-ZnPc.dat"
a=pattern.match(teststring, re.I)
print a

Output: None

Upvotes: 1

Views: 894

Answers (1)

Amber
Amber

Reputation: 526573

Because you should be passing the re.I to compile(), not match().

>>> pattern = re.compile(r'^9', re.I)
>>> a=pattern.match(teststring)
>>> print a
<_sre.SRE_Match object at 0x1140168>

Upvotes: 3

Related Questions