无法使用 Groovy 从文本文件中捕获所需的字符串 - Jmeter JSR223

Unable to capture required string from text file using Groovy - Jmeter JSR223

我需要解析一个文本文件 testresults.txt 并捕获序列号,然后使用 groovy Jmeter JSR223 [=17= 将捕获的序列号写入名为 serialno.txt 的单独文本文件] 处理器。 下面的代码不起作用。它没有进入 while 循环本身。请帮忙。

import java.util.regex.Pattern
import java.util.regex.Matcher

String filecontent = new File("C:/device/resources/testresults.txt").text

def regex = "SerialNumber\" value=\"(.+)\""

java.util.regex.Pattern p = java.util.regex.Pattern.compile(regex)
java.util.regex.Matcher m = p.matcher(filecontent)

File SN = new File("C:/device/resources/serialno.txt")

while(m.find()) {
     SN.write m.group(1) 
}

如果您的代码没有进入循环,则表示没有匹配项,因此您需要修改正则表达式,您可以使用 Regex101 网站进行实验

给定 testresults.txt 文件的以下内容:

SerialNumber" value="foo"
SerialNumber" value="bar"
SerialNumber" value="baz"

您的代码工作正常。

暂时我只能建议使用match operator让你的代码更“groovy”

def source = new File('C:/device/resources/testresults.txt').text

def matches = (source =~ 'SerialNumber" value="(.+?)"')

matches.each { match ->
    new File('C:/device/resources/serialno.txt') << match[1] << System.getProperty('line.separator')
}

演示:

更多信息:Apache Groovy - Why and How You Should Use It