'Assigning regex to a string variable is giving error when using in Jmeter Post processor using Groovy
I am trying to assign regex to a string so i can use it later for partial string extraction. Somehow it doesn't like it when grouping is used
I need to use regex = (,"action")(.*?)(})
def res =prev.getResponseDataAsString(); strRegExp = ~"(,"action")(.*?)(})"
// def strRegExp = ~',"action"' // This is working fine
def strRel = res.minus(strRegExp)
Giving below exception :
javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script34.groovy: 66: Unexpected input: '"' @ line 66, column 28. def strRegExp = ~"(,"action")(.*?)(})" ^
1 error
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:183) ~[groovy-jsr223-3.0.7.jar:3.0.7]
at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:211) ~[ApacheJMeter_core.jar:5.4.3]
at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:45) [ApacheJMeter_components.jar:5.4.3]
at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:955) [ApacheJMeter_core.jar:5.4.3]
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:573) [ApacheJMeter_core.jar:5.4.3]
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) [ApacheJMeter_core.jar:5.4.3]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) [ApacheJMeter_core.jar:5.4.3]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_111]
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script34.groovy: 66: Unexpected input: '"' @ line 66, column 28. def strRegExp = ~"(,"action")(.*?)(})" ^
1 error
at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:295) ~[groovy-3.0.7.jar:3.0.7]
at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:151) ~[groovy-3.0.7.jar:3.0.7]
at org.apache.groovy.parser.antlr4.AstBuilder.collectSyntaxError(AstBuilder.java:4582) ~[groovy-3.0.7.jar:3.0.7]
at org.apache.groovy.parser.antlr4.AstBuilder.access$000(AstBuilder.java:341) ~[groovy-3.0.7.jar:3.0.7]
at org.apache.groovy.parser.antlr4.AstBuilder$1.syntaxError(AstBuilder.java:4597) ~[groovy-3.0.7.jar:3.0.7]
at groovyjarjarantlr4.v4.runtime.ProxyErrorListener.syntaxError(ProxyErrorListener.java:44) ~[groovy-3.0.7.jar:3.0.7]
at groovyjarjarantlr4.v4.runtime.Parser.notifyErrorListeners(Parser.java:543) ~[groovy-3.0.7.jar:3.0.7]
at groovyjarjarantlr4.v4.runtime.DefaultErrorStrategy.notifyErrorListeners(DefaultErrorStrategy.java:154) ~[groovy-3.0.7.jar:3.0.7]
at org.apache.groovy.parser.antlr4.internal.DescriptiveErrorStrategy.reportInputMismatch(DescriptiveErrorStrategy.java:103) ~[groovy-3.0.7.jar:3.0.7]
at org.apache.groovy.parser.antlr4.internal.DescriptiveErrorStrategy.recover(DescriptiveErrorStrategy.java:55) ~[groovy-3.0.7.jar:3.0.7]
at org.apache.groovy.parser.antlr4.internal.DescriptiveErrorStrategy.recoverInline(DescriptiveErrorStrategy.java:68) ~[groovy-3.0.7.jar:3.0.7]
at groovyjarjarantlr4.v4.runtime.Parser.match(Parser.java:213) ~[groovy-3.0.7.jar:3.0.7]
at org.apache.groovy.parser.antlr4.GroovyParser.compilationUnit(GroovyParser.java:362) ~[groovy-3.0.7.jar:3.0.7]
at org.apache.groovy.parser.antlr4.AstBuilder.buildCST(AstBuilder.java:405) ~[groovy-3.0.7.jar:3.0.7]
at org.apache.groovy.parser.antlr4.AstBuilder.buildCST(AstBuilder.java:384) ~[groovy-3.0.7.jar:3.0.7]
at org.apache.groovy.parser.antlr4.AstBuilder.buildAST(AstBuilder.java:424) ~[groovy-3.0.7.jar:3.0.7]
at org.apache.groovy.parser.antlr4.Antlr4ParserPlugin.buildAST(Antlr4ParserPlugin.java:58) ~[groovy-3.0.7.jar:3.0.7]
at org.codehaus.groovy.control.SourceUnit.buildAST(SourceUnit.java:257) ~[groovy-3.0.7.jar:3.0.7]
at java.util.Iterator.forEachRemaining(Unknown Source) ~[?:1.8.0_111]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source) ~[?:1.8.0_111]
at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source) ~[?:1.8.0_111]
at org.codehaus.groovy.control.CompilationUnit.buildASTs(CompilationUnit.java:666) ~[groovy-3.0.7.jar:3.0.7]
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:632) ~[groovy-3.0.7.jar:3.0.7]
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389) ~[groovy-3.0.7.jar:3.0.7]
at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332) ~[groovy-3.0.7.jar:3.0.7]
at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) ~[groovy-3.0.7.jar:3.0.7]
at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) ~[groovy-3.0.7.jar:3.0.7]
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:330) ~[groovy-3.0.7.jar:3.0.7]
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314) ~[groovy-3.0.7.jar:3.0.7]
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:257) ~[groovy-3.0.7.jar:3.0.7]
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngineImpl.java:336) ~[groovy-jsr223-3.0.7.jar:3.0.7]
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:181) ~[groovy-jsr223-3.0.7.jar:3.0.7]
... 7 more
Solution 1:[1]
You need to use something like:
def strRegExp = "(,\"action\")(.*?)(})"
or use single quotes instead of double quotes:
def strRegExp = '(,"action")(.*?)(})'
More information:
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Dmitri T |
