我想从这个字符串中获取整数 <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,64 位。
最佳答案
正则表达式匹配对象的 string
属性包含匹配的 input 字符串,而不是匹配的内容。
如果你想要(第一个)匹配部分,你需要改变三件事:
- 使用
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']
如果您期望不止一场比赛。
关于python - 如何修复无法正常工作的 Python 正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23325185/