RegEx для сопоставления и извлечения скоростей UL и DL в переменные - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь отслеживать передачу файлов. Выход:

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 Ответ

1 голос
/ 30 апреля 2019

Я не уверен, что это будет правильное направление.Однако этот 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

Если вы хотите получить три переменные, вы можете добавить один соответствующий набор для UL и DL, а другойустановить для ETA, возможно, аналогично этому RegEx

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

Я добавил несколько границ, так как я не совсем уверен, как могут выглядеть ваши возможные входные данные.Вы можете многое упростить, если хотите.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...