我正在解析一个文件并查看用户名将会更改的username-#
行,并且短划线后可以有任意数量的数字[0-9]
。
我几乎尝试了在正则表达式中使用变量username
的所有组合。
我是否接近re.compile('%s-\d*'%user)
之类的东西?
答案 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*')