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

uta*_*hak 19 python regex

我正在解析一个文件并查找username-#用户名将在哪里更改的行,并且[0-9]在破折号后面可以有任意数量的数字.

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

我甚至接近类似的东西re.compile('%s-\d*'%user)吗?

小智 21

正常工作:

>>> 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')
Run Code Online (Sandbox Code Playgroud)

  • 确保使用`re.escape()`,因为@Steven在他的回答中说.例如`regex = re.compile('%s-\d*'%re.escape(user))`. (2认同)