python3正则表达式返回空元组

时间:2016-03-06 09:13:28

标签: python regex python-3.4

我正在尝试应用正则表达式从文件中收集数据,而我只得到空结果。例如,这个小测试(python3.4.3

import re

a = 'abcde'
r = re.search('a',a)
print(r.groups())
exit()

空元组(())的结果。显然,我在这里做错了什么,但是什么?

注释: 我实际上要做的是通过查找括号内的值来解释诸如0.7*sqrt(2)之类的表达式。

2 个答案:

答案 0 :(得分:4)

这是因为你的正则表达式中没有组。如果您将其替换为:

count=$(echo "$num" | sed 's/^0*//')

你会得到这些小组:

>>> r = re.search('(a)',a)

使用>>> print(r.groups()) ('a',) 应该使用第一个选项:

group

答案 1 :(得分:2)

r.groups()返回一个空元组,因为你的正则表达式不包含任何组。

>>> import re
>>> a = 'abcde'
>>> re.search('a', a)
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.search('a', a).groups()
()
>>> re.search('(a)', a).groups()
('a',)

查看re模块documentation

  

(...)       匹配括号内的正则表达式,并指示组的开始和结束;

编辑:如果要捕捉表达式O.7*sqrt(2)中括号之间的位,可以使用以下模式:

>>> re.search('[\d\.]+\*sqrt\((\d)\)', '0.7*sqrt(2)').group(1)
'2'