Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
487 views
in Technique[技术] by (71.8m points)

python - 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
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...