我想从字符串<some>some 344.3404.3 numbers<tag>
中获取整数。
使用Pythex仿真器网站,它与[\d\.]*
一起使用(数字或点重复零次或多次)。
在Python中,我得到了整个字符串:
输入:
import re
re.match(r'[\d\.]*', '<some>some 344.3404.3 numbers<tag>').string
输出:
'<some>some 344.3404.3 numbers<tag>'
我缺少什么?
运行python 3.3.5,win7,64bit。
答案 0 :(得分:2)
您可以使用:
re.search(r'[\d.]+', '<some>some 344.3404.3 numbers<tag>').group()
注意:您的模式不起作用,因为[\d.]*
将匹配第一个位置的空字符串。这就是我用+
替换量词并将方法从匹配更改为搜索的原因。
没有必要转义字符类中的点,因为默认情况下它被视为文字字符。
答案 1 :(得分:2)
正则表达式匹配对象的string
属性包含匹配的输入字符串,而不是匹配的内容。
如果你想要(第一个)匹配部分,你需要改变三件事:
re.search()
,因为re.match()
只会在字符串的开头找到匹配项,group()
方法,+
代替*
,否则您将获得一个空的(零长度)匹配,除非匹配恰好位于字符串的开头。因此,请使用
>>> re.search(r'[\d.]+', '<some>some 344.3404.3 numbers<tag>').group()
'344.3404.3'
或
>>> re.findall(r'[\d.]+', '<some>some 344.3404.3 numbers more 234.432<tag>')
['344.3404.3', '234.432']
如果你期望不止一场比赛。