在Python正则表达式中使用变量
我正在解析一个文件,想在每一行中查找类似 username-#
的内容,其中的用户名会变化,破折号后面可以跟任意数量的数字 [0-9]
。
我几乎尝试了所有组合,想在正则表达式中使用变量 username
。
像 re.compile('%s-\d*'%user)
这样的写法,我这样做是不是差不多了?
4 个回答
3
没错,你可以自己把正则表达式拼接起来,或者使用字符串格式化。不过,如果你的变量里面可能有一些在正则表达式中有特殊含义的字符,记得要用一下 re.escape(),这样可以避免出现问题。
3
你可以使用字符串的 .format() 方法来创建这个字符串:
re.compile('{}-\d*'.format(user))
22
正常工作:
>>> 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')