Using variables in Python regular expression [duplicate]
I'm parsing a file and looking in the lines for userna开发者_如何学运维me-#
where the username will change and there can be any number of digits [0-9]
after the dash.
I have tried nearly every combination trying to use the variable username
in the regular expression.
Am I even close with something like re.compile('%s-\d*'%user)
?
Working as it should:
>>> user = 'heinz'
>>> import re
>>> regex = re.compile('%s-\d*'%user)
>>> regex.match('heinz-1')
<_sre.SRE_Match object at 0x2b27a18e3f38>
>>> regex.match('heinz-11')
<_sre.SRE_Match object at 0x2b27a2f7c030>
>>> regex.match('heinz-12345')
<_sre.SRE_Match object at 0x2b27a18e3f38>
>>> regex.match('foo-12345')
You could create the string using .format() method of string:
re.compile('{}-\d*'.format(user))
Yes, concatenate the regex yourself, or use string formatting. But don't forget to use re.escape() if your variable could contain characters that have special meaning in regular expressions.
What about:
re.compile(user + '-\d*')
精彩评论