2013-02-20 60 views
0

我想使用数字变量正则表达式部分。如何在python正则表达式中使用

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

我想包含输入输出线路数量使用的变量。

+1

你能解释一下你的意思吗?你想使用什么变量,以及你期望的输入和输出是什么? – pyrospade 2013-02-20 05:18:54

回答

1

使用string interpolation

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

如果瓦尔尚未整数你可能需要转换类型如下:

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

对于整数值(即使'%d'起作用),那会是“\ d {%i}:\ d {%i}”吗? – Kenosis 2013-02-20 05:48:06

+0

没关系,'%i'和'%d'完全一样。我一直使用并见过'%d'。 – 2013-02-20 05:58:01

+0

对不起,我想把一个变量代替(?P \ d)sys.argv [1]:sys.argv [2]来找到并纠正输出行去 – 2013-02-20 07:36:26

1

你的问题不清楚。

如果你想捕捉正则表达式的某些特定部分,你必须创建组(使用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',上面的代码将打印:


现在,如果你需要的是一些变量取代\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) 
0

你可以把它作为一个字符串(我第一次逃吧):

m = re.compile(re.escape(hh) + r':\d{2}') 
相关问题