对于某些字符串,re.search不返回匹配项



我正在尝试使用re.search从字符串中提取模式,示例如下:

"lt;2〃"lt;20.000";

import re
re.search('[0-9]*[.][0-9]*','<20.000')[0]
'20.000'
re.search('[0-9]*[.]*[0-9]*','<20.000')[0]
''
re.search('[0-9]*[.][0-9]*','<2')[0]
TypeError: 'NoneType' object is not subscriptable
re.search('[0-9]*[.]*[0-9]*','<2')[0]
''

我本以为这个表达式在第二种情况下会用[\.]*表示";20.000";。我也会认为这对"<2〃;,但两者都返回空白字符串。我不明白为什么它适用于";20.000";不过使用[\.]。

*与前面的模式匹配任意次数,包括零。因此,[0-9]*[.]*[0-9]*匹配零位数字后接零个点后接零位数字,这允许它匹配<之前的零长度字符串。

[.]之后没有*的版本需要匹配中的.,因此它不能匹配空字符串。

顺便说一下,当.[]内部时,没有必要逃离它。所以你可以写[.].,不需要两者都写。

相关内容

  • 没有找到相关文章

最新更新