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.