括号内的Python正则表达式

时间:2015-04-16 19:40:33

标签: python regex python-2.6

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

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返回None。这是一个python小提琴,显示它(不)工作:http://pythonfiddle.com/regex-in-parenthesis

我也在Pythex中尝试了这个(here's a link),但在那个环境下它可以工作!

我正在摸索着发生了什么,你能给我的任何帮助都将不胜感激。我正在使用python 2.6,如果这有所不同。

2 个答案:

答案 0 :(得分:2)

re.match()仅匹配字符串的开头。请改为re.search()

答案 1 :(得分:1)

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

\((\d+).*\)

注意您需要转义括号并使用捕获分组进行数字组合(\d+),同时注意 re.match { {3}},而您需要使用re.search

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

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

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