有这个输入字符串:
health status index pri rep docs.count docs.deleted store.size pri.store.size
yellow open test1 5 1 222173 0 43.8gb 43.8gb
yellow open test2 5 1 27142 10 36.6mb 36.6mb
我使用以下正则表达式提取一些信息:
^(\w+)\W+\w+\W+(\w+)\W+\w+\W+(\w+)\W+(\w+)\W+(\w+)\W+(\w+)~m
正如您所看到的,从最后一组(Group 6
)开始,我只是第一个点(43
)之前的数字。
如何更正,以便最后一组取整个数字?我的意思是,如果没有43.8
和36.6
,请gb
和mb
?
演示: https://regex101.com/r/rMfWC4/3
提前致谢
答案 0 :(得分:2)
您可以添加替换(\d+\.\d+|\w+)
以匹配digit(s)
+ .
+ digit(s)
或(|
)alphanum/_
字符:
^(\w+)\W+\w+\W+(\w+)\W+\w+\W+(\w+)\W+(\w+)\W+(\w+)\W+(\d+\.\d+|\w+)
^^^^^^^^^^^^^
请参阅regex demo
答案 1 :(得分:1)
^(\w+)\W+\w+\W+(\w+)\W+\w+\W+(\w+)\W+(\w+)\W+(\w+)\W+(\w+\W+\d+)
嗨,你几乎在那里添加非数字捕获将捕获点(。)或任何特殊字符,并添加\ d将再次捕获数字+符号将捕获数字,如果它包含多个。 我希望这会对你有所帮助。祝你好运。