嵌套正则表达式

时间:2015-05-06 15:11:01

标签: python regex

我有一个包含字母数字值的字符串。数值是变量。字母值始终为'abc''ghi',但我不知道他们的顺序。 数值总是在字母值之后。

这种字符串的有效示例是:

a = 'abc10ghi1450'
b = 'abc11ghi9285'
c = 'ghi1abc9'
...

现在我想将'abc''ghi'之后的数字存储到适当的变量中,我正在做的是:

>>> import re
>>> string = 'abc10ghi44'
>>> abc = re.search('abc\d+', string).group(0)
>>> abc = re.search('\d+', abc).group(0)
>>> ghi = re.search('ghi\d+', string).group(0)
>>> ghi = re.search('\d+', ghi).group(0)
>>> print abc, ghi
10, 44

对于每个变量,我使用2个正则表达式而我不喜欢它;是否有一种更聪明的方法来做同样的事情?

1 个答案:

答案 0 :(得分:5)

是的,围绕数字创建一个捕获组并使用:

>>> import re
>>> string = 'abc10ghi44'
>>> re.search('abc(\d+)', string).group(1)
'10'

请注意\d+来电中1group周围的括号。

或者,使用肯定的背后隐藏

>>> re.search('(?<=abc)\d+', string).group(0)
'10'