我在尝试从括号内获取一些数据时遇到了一些麻烦。这是一些示例代码:
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,如果这有所不同。
答案 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']