RegEx用于将UL和DL速度匹配并提取到变量中

时间:2019-04-30 17:15:13

标签: regex perl

我正试图监视文件传输。输出为:

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中。

您能以正确的方式寄给我吗?

1 个答案:

答案 0 :(得分:1)

我不确定这是否是正确的方向。但是,this RegEx可能会帮助您匹配您的UL和DL变量。

(UL:\s|DL:\s)([0-9\.]+)(\sKiB\/s|\sMiB\/s)

它具有三个捕获组:

  • 正确的位置是您的单位所在的位置,您只需添加 | 即可添加更多内容。
  • 左边界类似于右边界。
  • 在中间组中,仅允许数字和,不能带空格。

如果愿意,还可以减少界限并简化此RegEx。

您可以确定是否还有其他Perl要求的检查要执行。

enter image description here

如果浮点数和单位之间有更多空格,则可以使用此RegEx

(UL:\s+|DL:|\s+)([0-9\.]+)(\s+KiB\/s|\s+MiB\/s)

enter image description here

如果希望获得三个变量,则可以为ULDL添加一个匹配集,为ETA添加另一个匹配集,可能类似于this RegEx < / p>

((UL:\s+|DL:\s+)([0-9\.]+)(\s+KiB\/s|\s+MiB\/s))|((ETA:\s+)([0-9hms]+\s[0-9hms]+))

我已经添加了几个边界,因为我不确定,您可能输入的内容看起来如何。如果愿意,可以简化很多。

enter image description here