无法使用 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')
}
演示:
我需要解析一个文本文件 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')
}
演示: