正则表达式匹配一个或多个数字

时间:2017-08-05 18:15:08

标签: python regex

我有这样的数据集(它从文件中打开为str):

MF8='out1mf8':'constant',[1944.37578865883]
MF9='out1mf9':'constant',[2147.79853787502]
MF10='out1mf10':'constant',[565.635908155949]
MF11='out1mf11':'constant',[0]
MF12='out1mf12':'constant',[0]

我需要括号中的这个值,所以创建了一个正则表达式:

outmfPattern = 'out\dmf\d'

并使用:

re.findall(outmfPattern, f)

直到mf = 9才开始工作。有没有人知道如何处理这个?

1 个答案:

答案 0 :(得分:5)

让我们分解你的正则表达式out\dmf\d

  • out匹配序列'out'
  • \d匹配数字
  • mf匹配序列'mf'
  • \d匹配数字

如果您想匹配out1mf11之类的内容,则需要在结尾处查找 2 位。

您可以使用out\dmf\d+,或者,如果您希望最后只匹配 1或2个数字out\dmf\d{1,2}

In [373]: re.findall('out\dmf\d+', text)
Out[373]: ['out1mf8', 'out1mf9', 'out1mf10', 'out1mf11', 'out1mf12']

此外,如果您想为这些搜索项添加括号,您可能应该改为re.sub

In [377]: re.sub('(out\dmf\d+)', r'(\1)', text)
Out[377]: "MF8='(out1mf8)':'constant',[1944.37578865883] MF9='(out1mf9)':'constant',[2147.79853787502] MF10='(out1mf10)':'constant',[565.635908155949] MF11='(out1mf11)':'constant',[0] MF12='(out1mf12)':'constant',[0]"

re.sub用parens中的相同内容替换捕获的组。