Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复我的非工作Python正则表达式匹配?_Python_Regex - Fatal编程技术网

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

如何修复我的非工作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 输出: '&

我想从这个字符串中提取一些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
输出:

'<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