我正在尝试使用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]*
匹配零位数字后接零个点后接零位数字,这允许它匹配<
之前的零长度字符串。
[.]
之后没有*
的版本需要匹配中的.
,因此它不能匹配空字符串。
顺便说一下,当.
在[]
内部时,没有必要逃离它。所以你可以写[.]
或.
,不需要两者都写。