在Python正则表达式中使用变量

时间:2011-05-05 15:51:58

标签: python regex

我正在解析一个文件并查看用户名将会更改的username-#行,并且短划线后可以有任意数量的数字[0-9]

我几乎尝试了在正则表达式中使用变量username的所有组合。

我是否接近re.compile('%s-\d*'%user)之类的东西?

4 个答案:

答案 0 :(得分:20)

正常工作:

>>> 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')

答案 1 :(得分:3)

是的,自己连接正则表达式,或使用字符串格式。但是,如果您的变量可能包含在正则表达式中具有特殊含义的字符,请不要忘记使用re.escape()

答案 2 :(得分:2)

您可以使用字符串的.format()方法创建字符串:

re.compile('{}-\d*'.format(user))

答案 3 :(得分:0)

怎么样:

re.compile(user + '-\d*')