我正试图监视文件传输。输出为:
Status: Uploading UL: 0.0 KiB/s
Status: Paused
Status: Downloading DL: 358.9 KiB/s ETA: 1h 27m
Status: Stopped
Status: Uploading UL: 25.8 MiB/s ETA: 25m 30s
我想使用perl正则表达式将它们放入$dl_speed
,$ul_speed
和$eta
中。
您能以正确的方式寄给我吗?
答案 0 :(得分:1)
我不确定这是否是正确的方向。但是,this RegEx可能会帮助您匹配您的UL和DL变量。
(UL:\s|DL:\s)([0-9\.]+)(\sKiB\/s|\sMiB\/s)
它具有三个捕获组:
如果愿意,还可以减少界限并简化此RegEx。
您可以确定是否还有其他Perl要求的检查要执行。
如果浮点数和单位之间有更多空格,则可以使用此RegEx:
(UL:\s+|DL:|\s+)([0-9\.]+)(\s+KiB\/s|\s+MiB\/s)
如果希望获得三个变量,则可以为UL
和DL
添加一个匹配集,为ETA
添加另一个匹配集,可能类似于this RegEx < / p>
((UL:\s+|DL:\s+)([0-9\.]+)(\s+KiB\/s|\s+MiB\/s))|((ETA:\s+)([0-9hms]+\s[0-9hms]+))
我已经添加了几个边界,因为我不确定,您可能输入的内容看起来如何。如果愿意,可以简化很多。