groovy - 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)
如何解决这个问题并获得价值?
谢谢,
解决方案
您看到的问题是因为您的正则表达式格式错误,因此您的整个代码无法编译
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)
推荐阅读
- ios - 应用程序崩溃:NSInvalidArgumentException - 操作已在队列中排队
- android - 无法为 com.android.build.gradle.internal.dsl.NdkOptions 类型的对象获取未知属性“arm64-v8a”
- shell - 如何查找列中唯一字符串的数量,然后是给定字符串的位置
- java - 测试 DoFn Apache Crunch
- html - div 使内容溢出,并且此滚动水平可用。如何正确调整尺寸?
- hyperledger-fabric - 在 Hyperledger Fabric 中启动对等点时出现 nil conf 错误
- rust - Rust 在编译时没有已知的大小
- python - 如何使用 itertools 打印字符串中所有可能的组合?
- python-3.x - Python 事件处理程序 marco
- python - 这是一个逻辑表达式吗?