用re解析字符串外的数字和小数

时间:2018-07-22 21:46:28

标签: regex python-3.x

我有一个看起来像这样的字符串:

“主页Cookie查看过的项目“ yada_yada.mov”(22.4338.241384081)”

我需要从字符串中解析出最后一组数字,即最后一个句点和结束括号之间的数字(在本例中为241384081),请记住,可能会有一组或多组括号文件名“ yada_yada.mov”。

到目前为止,我有这个:

mo = re.match('.*([0-9])\)$', data1)

...其中data1是字符串。但这只是返回最后一位。

有什么帮助吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用

(\d[\d.]*)\)$

请参见regex demo

详细信息

  • (\d[\d.]*)-捕获组1:捕获一个数字,然后捕获任意数量的.和数字,次数为0或更多
  • \)-一个)
  • $-字符串的结尾。

请参见Python demo

import re

s='Home Cookie viewed item "yada_yada.mov" (22.4338.241384081)'
m = re.search(r'(\d[\d.]*)\)$', s)
if m:
    print(m.group(1)) # => 22.4338.241384081
  # print(m.group(1).replace(".", "")) # => 224338241384081 

替代模式:

(\d+(?:\.\d+)*)\)$    # To match digits and then 0 or more repetitions of . + digits
(\d+(?:\.\d+)*)\)\s*$ # To allow any 0+ trailing whitespaces