Python RE搜索数字和十进制

Kar*_*mar 5 python python-2.7

我正在尝试使用 pythons 正则表达式提取数字值(100.00 和 200.00),但是当我调用代码时它没有产生任何结果......我使用的是 python 版本 2.7

1)我的文件名是“file100”,我需要从中选择值..

# cat file100
Hi this doller 100.00
Hi this is doller 200.00
Run Code Online (Sandbox Code Playgroud)

2)这是我的python代码..

# cat count100.py
#!/usr/bin/python
import re
file = open('file100', 'r')
for digit in file.readlines():
        myre=re.match('\s\d*\.\d{2}', digit)
        if myre:
           print myre.group(1)
Run Code Online (Sandbox Code Playgroud)

3)当我运行这段代码时,它没有产生任何东西,没有错误..没有..

# python   count100.py
Run Code Online (Sandbox Code Playgroud)

Jua*_*doy 2

使用re.search代替:

import re
file = open('file.txt', 'r')
for digit in file.readlines():
    myre = re.search(r'\s\b(\d*\.\d{2})\b', digit)
    if myre:
        print myre.group(1)
Run Code Online (Sandbox Code Playgroud)

结果

100.00
200.00
Run Code Online (Sandbox Code Playgroud)

文档中:

扫描字符串,查找正则表达式模式产生匹配的第一个位置

如果您决定使用组,还需要括号:

(...) 匹配括号内的任何正则表达式,并指示组的开始和结束;执行匹配后可以检索组的内容,并且可以稍后在字符串中使用 \number 特殊序列进行匹配,如下所述。要匹配文字“(”或“)”,请使用 ( 或 ),或将它们括在字符类中:[(] [)]。

re.match仅有效:

如果字符串开头的零个或多个字符与正则表达式模式匹配

rregex作为原始字符串括起来:

字符串文字可以选择以字母“r”或“R”为前缀;此类字符串称为原始字符串,并使用不同的规则来解释反斜杠转义序列。

...

除非存在“r”或“R”前缀,否则字符串中的转义序列将根据与标准 C 使用的规则类似的规则进行解释

  • 问题是为什么它不起作用,@klashxx 给出的答案解释了原因。如果您想改进答案,可以将其作为单独的答案给出,为什么要否决它呢? (2认同)