Python 使用正则表达式编写脚本以打印两个模式之间的字符串,但仅最后一次出现

Python 使用正则表达式编写脚本以打印两个模式之间的字符串,但仅最后一次出现,python,regex,linux,raspberry-pi3,Python,Regex,Linux,Raspberry Pi3,我正在我的Raspberry Pi 3上编写一个python脚本,它将记录来自开源标尺的权重,并将它们放入数据库中。电子秤只是将输出/读数记录到一个文件中。问题是天平输出了很多我不需要的数据。每次脚本运行时,它都会在文件的底部添加一个新的读数,您可以看到下面的一部分。所以基本上我需要的是最近的重量读数,它总是在文件的最后一行 我对regex有点不在行。尽管我进行了搜索和尝试,但我似乎无法分离出最后的体重读数 Serial Load Cell Converter version 1.2 By Sp

我正在我的Raspberry Pi 3上编写一个python脚本,它将记录来自开源标尺的权重,并将它们放入数据库中。电子秤只是将输出/读数记录到一个文件中。问题是天平输出了很多我不需要的数据。每次脚本运行时,它都会在文件的底部添加一个新的读数,您可以看到下面的一部分。所以基本上我需要的是最近的重量读数,它总是在文件的最后一行

我对regex有点不在行。尽管我进行了搜索和尝试,但我似乎无法分离出最后的体重读数

Serial Load Cell Converter version 1.2
By SparkFun Electronics
No remote sensor found
Minimum time between reports: 791
Press x to bring up settings
Readings:
1274,2.5007,lbs,540611,

Serial Load Cell Converter version 1.2
By SparkFun Electronics
No remote sensor found
Minimum time between reports: 792
Press x to bring up settings
Readings:
1341,2.5008,lbs,540620,

Serial Load Cell Converter version 1.2
By SparkFun Electronics
No remote sensor found
Minimum time between reports: 792
Press x to bring up settings
Readings:
1321,2.5009,lbs,540643,
最后一行: 1321,2.5009磅,540643磅


我需要“2.5009”所在的值,但我不能简单地匹配该数字,因为它会随着每次添加的读数而急剧变化,就像最后一行上的其他数字一样。唯一保持不变的是逗号和“lbs”

可能,此表达式可能提取最后一个值:

.*Readings:\s*[^,]*,\s*([^,]*?)\s*,
测验 输出
如果您希望探索/简化/修改该表达式,它已被删除 在的右上面板上进行了说明 . 如果你愿意,你可以 也可以观看,它将如何匹配 对照一些样本输入



那么,您的预期输出是:“读数:1321”和“、磅”之间的值?没错。但正如我所说的,1321会随着每次读数而变化,只有逗号和磅数是恒定的,所以我在寻找散列标记处的值:我在寻找散列标记处的十进制值:1321,磅数,磅数,540643,试试
(?s^.*,(\d+(?:\),\b
谢谢Emma。但我试图只得到最后一个重量读数“2.5009”,如果有帮助的话,它将始终位于文件的最后一行。
import re

regex = r".*Readings:\s*[^,]*,\s*([^,]*?)\s*,"

test_str = """
Serial Load Cell Converter version 1.2
By SparkFun Electronics
No remote sensor found
Minimum time between reports: 791
Press x to bring up settings
Readings:
1274,2.5007,lbs,540611,

Serial Load Cell Converter version 1.2
By SparkFun Electronics
No remote sensor found
Minimum time between reports: 792
Press x to bring up settings
Readings:
1341,2.5008 ,lbs,540620,

Serial Load Cell Converter version 1.2
By SparkFun Electronics
No remote sensor found
Minimum time between reports: 792
Press x to bring up settings
Readings:
1321, 2.5009,lbs,540643,

"""

print(re.findall(regex, test_str, re.DOTALL))
['2.5009']