我正在尝试应用正则表达式从文件中收集数据,而我只得到空结果。例如,这个小测试(python3.4.3
)
import re
a = 'abcde'
r = re.search('a',a)
print(r.groups())
exit()
空元组(()
)的结果。显然,我在这里做错了什么,但是什么?
注释:
我实际上要做的是通过查找括号内的值来解释诸如0.7*sqrt(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'