首页 > 解决方案 > groovy脚本正则表达式获取数字

问题描述

我有以下字符串“事件:(5 个活动警报):abc_log_001:”(没有双引号)

我想在java groovy中编写一个正则表达式来获得数字'5'我尝试了下面但是

    def m = parent =~ /(INCIDENT: \\d+))/;
if(!m)
{
        throw new Exception("Could not parse alarm count from parent : ${parent}");
    }

    def alarmCount = m[0][1];

它抛出一个错误

意外标记:如果@第 13 行,第 2 列。 if (!m)

如何解决这个问题并获得价值?

谢谢,

标签: groovy

解决方案


您看到的问题是因为您的正则表达式格式错误,因此您的整个代码无法编译

def m = parent =~ /(INCIDENT: \d+) ) /

首先删除多余的右括号。

其次,你的正则表达式无论如何都不会匹配。您需要在字符串中包含所有字符并仅对数字部分进行分组。

使固定:

def parent = "INCIDENT: (5 active alarms): abc_log_001:"
def m = parent =~ /^INCIDENT: \((\d+).*\).*$/
if (!m) {
    throw new Exception("Could not parse alarm count from parent : ${parent}")
}

println m.group(1)

推荐阅读