You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Groovy中获取匹配"abcd efgh"行之后的内容?

提取"abcd efgh"之后的内容(Groovy实现)

没问题,我来帮你搞定这个需求。在Groovy里,你可以用两种实用方式实现:正则匹配或者更简洁的字符串原生方法,下面分别给你详细示例:

方法一:正则表达式精准捕获

Groovy兼容Java正则语法,我们可以通过捕获组直接提取目标内容:

示例代码

def inputText = "dafdsdf abcd efgh hello hi new"
// 定义正则,捕获"abcd efgh"之后的所有内容
def pattern = /.*abcd efgh(.*)/
def matcher = inputText =~ pattern

if (matcher.matches()) {
    def result = matcher.group(1).trim() // 移除开头可能的冗余空格
    println(result) // 输出: hello hi new
}

正则逻辑解释

  • .*:匹配任意字符(不含换行)零次或多次,用来覆盖"abcd efgh"之前的所有内容
  • abcd efgh:精确匹配你指定的触发字符串
  • (.*):捕获组,专门用来提取触发字符串之后的所有内容
  • 调用trim()是为了处理触发字符串和目标内容之间可能存在的多余空格

方法二:Groovy字符串便捷操作

如果确定触发字符串一定存在,用indexOf配合substring会更直观,性能也略优:

def inputText = "dafdsdf abcd efgh hello hi new"
def triggerStr = "abcd efgh"
def startPos = inputText.indexOf(triggerStr) + triggerStr.length()
def result = inputText.substring(startPos).trim()

println(result) // 输出: hello hi new

多行文本场景适配

如果你的输入是包含换行的多行文本,只需调整正则来匹配换行符:

def multiLineInput = """第一行内容
dafdsdf abcd efgh hello hi new
第三行内容"""
// 用[\s\S]*匹配包括换行在内的所有字符
def pattern = /.*abcd efgh([\s\S]*)/
def matcher = multiLineInput =~ pattern

if (matcher.matches()) {
    def result = matcher.group(1).trim()
    println(result)
}

内容的提问来源于stack exchange,提问作者Jenisha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:29:49