Я не уверен, что это будет правильное направление.Однако этот RegEx может помочь вам сопоставить переменные UL и DL.
(UL:\s|DL:\s)([0-9\.]+)(\sKiB\/s|\sMiB\/s)
У него есть три группы захвата:
- Правильно, куда идут ваши юниты, и вы можете просто добавить больше с | .
- Левая граница аналогична правой.
- В средней группе разрешены только цифры и . без пробелов.
Вы также можете уменьшить границы и значительно упростить этот RegEx, если хотите.
Вы можете убедиться, что есть другие проверки, необходимые для Perl.
![enter image description here](https://i.stack.imgur.com/eGYvp.png)
В случае, если между числами с плавающей запятой и единицами было больше пробелов, вы можете поработать с этим RegEx :
(UL:\s+|DL:|\s+)([0-9\.]+)(\s+KiB\/s|\s+MiB\/s)
![enter image description here](https://i.stack.imgur.com/buqT6.png)
Если вы хотите получить три переменные, вы можете добавить один соответствующий набор для 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](https://i.stack.imgur.com/TpPKN.png)