Python 括号内的正则表达式

Python regular expressions inside parenthesis

我在尝试从括号内获取一些数据时遇到了一些问题。这是一些示例代码:

import re    
test_string = '123a (456b)'
regex_a = re.match(r'(?P<a>\d+)a', test_string)
regex_b = re.match(r'(?P<b>\d+)b', test_string)
print regex_a
print regex_b

我本来希望这两个正则表达式对象分别返回 123 和 456,但是 regex_b returns None。这是一个 python fiddle 显示它(不)工作:http://pythonfiddle.com/regex-in-parenthesis

我也在 Pythex 中尝试过这个 (here's a link),但在那种环境下它有效!

我正在摸不着头脑,如果你能给我任何帮助,我将不胜感激。如果有区别,我正在使用 python 2.6。

re.match() 只匹配字符串的开头。请尝试 re.search()

如果您想匹配括号内的数字,您可以使用以下正则表达式:

\((\d+).*\)

注意 您需要转义括号并为您的数字组合使用捕获分组 (\d+),另外 注意re.match checks for a match only at the beginning of the string,你需要使用 re.search :

>>> re.search(r'\((\d+).*\)',test_string).group(1)
'456' 

如果您想查找所有数字,您可以使用 re.findall :

>>> re.findall(r'\d+',test_string)
['123', '456']