0

我想使用数字变量正则表达式部分。

如果我想在这部分使用变量,我应该怎么做(?P<hh>\d)

我想输出包含输入数字的行。

4

3 回答 3

1

使用字符串插值

m = re.compile(r'\d{%d}:\d{%d}' % (var1, var2))

如果变量不是整数,您可能需要像这样转换类型:

m = re.compile(r'\d{%d}:\d{%d}' % (int(var1), int(var2)))
于 2013-02-20T05:34:58.843 回答
1

你的问题不清楚。

如果要捕获regex 的某些特定部分,则必须创建组(使用 pharentesis):

hh = sys.argv[1]
m = re.compile(r'(?P<hh>\d):(\d{2})')
match = m.match(hh)

print match.group(1)
print match.group(2)

例如,如果hh = '1:23',上面的代码将打印:

1
23


现在,如果您需要用某个变量替换\d{2},您可以执行以下操作:

variable = r'\d{2}'
m = re.compile(r'(?P<hh>\d):%s' % variable)

或者,如果您只想替换2,您可以执行以下操作:

variable = '2'
m = re.compile(r'(?P<hh>\d):\d{%s}' % variable)

另一种选择可能是使用:

r'(?P<hh>\d):{0}'.format(variable)
于 2013-02-20T05:18:34.260 回答
0

您可以将其作为字符串传递(我会先将其转义):

m = re.compile(re.escape(hh) + r':\d{2}')
于 2013-02-20T05:19:02.930 回答