I’m just learning Python, and I can’t seem to figure out regular expressions.
r1 = re.compile("$.pdf")
if r1.match("spam.pdf"):
print 'yes'
else:
print 'no'
I want this code to print ‘yes’, but it obstinately prints ‘no’. I’ve also tried each of the following:
r1 = re.compile(r"$.pdf")
r1 = re.compile("$ .pdf")
r1 = re.compile('$.pdf')
if re.match("$.pdf", "spam.pdf")
r1 = re.compile(".pdf")
Plus countless other variations. I’ve been searching for quite a while, but can’t find/understand anything that solves my problem. Can someone help out a newbie?
Advertisement
Answer
You’ve tried all the variations except the one that works. The $ goes at the end of the pattern. Also, you’ll want to escape the period so it actually matches a period (usually it matches any character).
r1 = re.compile(r".pdf$")
However, an easier and clearer way to do this is using the string’s .endswith() method:
if filename.endswith(".pdf"):
# do something
That way you don’t have to decipher the regular expression to understand what’s going on.