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

正则提取XML中Release及Version版本列表失败问题排查

问题解决:从XML中提取release和version版本列表

问题原因

  • 正则表达式不匹配目标内容:当前正则/[7]{1}\.[0-9]{1,}\..*/仅匹配以7开头的版本号,但XML中的版本均以1开头,完全不匹配,导致返回空列表。
  • findAll用法错误:findAll{it=~regex}会遍历字符串的每个字符,将单个字符与正则匹配,显然无法匹配版本号格式,应该使用findAll(regex)重载方法提取所有符合正则的子串。

正则表达式解决方案

修正正则,精准匹配<release>和<version>标签内的版本号(避免误匹配XML声明的1.0),并调整findAll用法:

def listOfVersion = uc.getInputStream().text

// 正向断言匹配标签内的版本号
def regex = /(?<=<(release|version)>)\d+\.\d+(\.\d+)*(?=<\/(release|version)>)/
def versions = listOfVersion.findAll(regex)
println versions

执行后输出:[1.0.0, 1.0.0.2, 1.0.0.1, 1.0.0.0]

更可靠的XML解析方案

正则处理XML易受标签格式(如换行、空格)影响,推荐使用Groovy内置的XmlSlurper直接解析XML结构:

def xml = new XmlSlurper().parse(uc.getInputStream())
def releaseVersion = xml.versioning.release.text()
def versionList = xml.versioning.versions.version*.text()
def allVersions = [releaseVersion] + versionList

println allVersions

执行后输出同样符合预期的版本列表,且适配各种合法的XML格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:03:34