【发布时间】:2022-01-11 09:17:49
【问题描述】:
我有一些示例文本
# HELP aaasd asdads
# TYPE ASDA dasdas
goodmetric_total{"camel-1"} 777.0
# HELP qqq www
# TYPE eee rrr
badmetric_total{"camel-1"} 888.0
我需要从特定字符串中获取数字。使用 String.format,我将替换我需要的值。例如goodmetric_total。
如何编写正则表达式以仅获取数值? 目前,我有先搜索字符串的解决方案。
^goodmetric.+\d+
并且已经在这一行中寻找数字。
我认为您可以在一次操作中完成所有这些操作。 谢谢!
【问题讨论】:
-
你的意思是你需要得到
777.0或777.0和1?来自goodmetric_total{"camel-1"} 777.0? -
@WiktorStribiżew 对不起。我只需要得到像 777 这样的值
-
然后您可以使用非正则表达式方法,或者具有类似于
^goodmetric.+ (\d+)(?:\.0)?$(demo) 的模式的正则表达式方法(将数字的 int 部分捕获到第 1 组中)。 -
@WiktorStribiżew 谢谢!
-
为什么不直接使用String#split() 方法呢?
String value=""; if (line.trim().startsWith("goodmetric_total")) { value = line.split("\\s+")[1]; }.