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

20 投票
4 回答
35365 浏览
提问于 2025-04-16 17:03

我正在解析一个文件,想在每一行中查找类似 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')

撰写回答