如何修复我的非工作Python正则表达式匹配?

2024-10-06 14:32:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从这个字符串<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位


Tags: 字符串importrestring网站tagmatch数字
2条回答

您可以使用:

re.search(r'[\d.]+', '<some>some 344.3404.3 numbers<tag>').group()

注意:您的模式不起作用,因为[\d.]*将匹配第一个位置的空字符串。这就是为什么我将量词替换为+,并将方法从match更改为search

无需在字符类中转义点,因为它在默认情况下被视为文字字符

regex match对象的string属性包含匹配的输入字符串,而不是匹配的内容

如果要匹配(第一个)零件,需要更改三件事:

  • 使用re.search(),因为re.match()只会在字符串的开头找到匹配项
  • 访问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']

如果你期待不止一场比赛

相关问题 更多 >