如何修复我的非工作Python正则表达式匹配?
我想从这个字符串中提取一些344.3404.3数字的整数如何修复我的非工作Python正则表达式匹配?,python,regex,Python,Regex,我想从这个字符串中提取一些344.3404.3数字的整数 使用Pythex emulator网站,它可以与[\d\.]*(一个数字或点重复零次或多次)一起工作。 在Python中,我得到了整个字符串: 输入: import re re.match(r'[\d\.]*', '<some>some 344.3404.3 numbers<tag>').string 重新导入 重新匹配(r'[\d\.]*','some 344.3404.3数字').string 输出: '&
使用Pythex emulator网站,它可以与[\d\.]*
(一个数字或点重复零次或多次)一起工作。
在Python中,我得到了整个字符串:
输入:
import re
re.match(r'[\d\.]*', '<some>some 344.3404.3 numbers<tag>').string
重新导入
重新匹配(r'[\d\.]*','some 344.3404.3数字').string
输出:
'<some>some 344.3404.3 numbers<tag>'
“一些344.3404.3数字”
我错过了什么
运行Python3.3.5、win7、64位。您可以使用:
re.search(r'[\d.]+', '<some>some 344.3404.3 numbers<tag>').group()
re.search(r'[\d.]+','some 344.3404.3数字').group()
注意:您的模式不起作用,因为[\d.]*
将匹配第一个位置的空字符串。这就是为什么我将量词替换为+
,并将方法从匹配改为搜索
无需转义字符类中的点,因为默认情况下它被视为文字字符。您可以使用:
re.search(r'[\d.]+', '<some>some 344.3404.3 numbers<tag>').group()
re.search(r'[\d.]+','some 344.3404.3数字').group()
注意:您的模式不起作用,因为[\d.]*
将匹配第一个位置的空字符串。这就是为什么我将量词替换为+
,并将方法从匹配改为搜索
无需转义字符类中的点,因为默认情况下它被视为文字字符。正则表达式匹配对象的字符串属性包含匹配的输入字符串,而不是匹配的内容
如果需要(第一个)匹配零件,则需要更改三件事:
- 使用
re.search()
- 访问匹配对象的
group()
方法
- 使用
+
而不是*
,否则将得到一个空(零长度)匹配,除非匹配恰好位于字符串的开头
因此,使用
>>> re.search(r'[\d.]+', '<some>some 344.3404.3 numbers<tag>').group()
'344.3404.3'
>>重新搜索(r'[\d.]+,“一些344.3404.3数字”).group()
'344.3404.3'
或
>>关于findall(r'[\d.]+',“一些344.3404.3数字更多234.432”)
['344.3404.3', '234.432']
如果需要多个匹配。正则表达式匹配对象的字符串属性包含匹配的输入字符串,而不是匹配的内容
如果需要(第一个)匹配零件,则需要更改三件事:
- 使用
re.search()
- 访问匹配对象的
group()
方法
- 使用
+
而不是*
,否则将得到一个空(零长度)匹配,除非匹配恰好位于字符串的开头
因此,使用
>>> re.search(r'[\d.]+', '<some>some 344.3404.3 numbers<tag>').group()
'344.3404.3'
>>重新搜索(r'[\d.]+,“一些344.3404.3数字”).group()
'344.3404.3'
或
>>关于findall(r'[\d.]+',“一些344.3404.3数字更多234.432”)
['344.3404.3', '234.432']
如果您需要多个匹配项。请查看此项。请查看此项。快速问题:groups()
为什么在此处返回空元组?根据文档,它应该包含所有匹配的子组@ᴋᴇʏsᴇʀ:没有子组(组0不算作子组)。我明白了。谢谢你的回答。我用括号构造了一个组来确认:pQuick问题:groups()
为什么在这里返回空元组?根据文档,它应该包含所有匹配的子组@ᴋᴇʏsᴇʀ:没有子组(组0不算作子组)。我明白了。谢谢你的回答。我用括号建立了一个组来确认:p