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']
我在尝试从括号内获取一些数据时遇到了一些问题。这是一些示例代码:
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']