How to parameterize a regular expression in jmeter - regex

I have a variable
announcementName= test
I am trying to use regEx Extractor to match an expression in jmeter.
I am able to match data with the below expression.
{"id":(.*?),"announcementName":"test",
However I am unable to pass test as a variable to the same expression
{"id":(.*?),"announcementName":"${announcementName}",
I am unable to match anything with the above regEx matching.
Can someone please let me know on how to pass parameters to RegEx Extractor in Jmeter.

As per my experience, if you try this approach in listener to verify whether correlation is working or not than obviously it's not going to work.
But if you are passing this directly in reg ex extractor and trigger the script then it should work provided the variable does not contain any special character like (.,?) etc. (As you mentioned test as value so seems you took an example to display here but actual value is something else, so please check actual value once again to confirm it's a simple string without any special characters)

You can check with __V() function.
i.e.
{"id":(.*?),"announcementName":"${__V(${announcementName})}",

Related

How to correlate/use regular expression for empty or new line right boundary in JMeter

Example:
In a response headers I see,
state=a5d73a14-a728-4f0f-afae-de5fda55d002
Here I can use LB as state= and there is no right boundary.
So I tried using regular expression extractor as:
state=(.+)
and replaced the hard coded value in the next request as ${state}
The requests are failing as it takes ${state} itself in the request URL, it means regular expression extractor is not working. I know I have placed the function rightly. Still I don't know what I am doing wrong here. Any suggestion would really help!
Should search the response in main and sub samples. Before I was searching for response only in main sample's so it failed.
same regular expression worked: when there is no right boundary or new line right boundary.
state=(.+)
enter image description here
Actually your regex should work, maybe it fails due to line break or something, to be on the safe side try using state=(.*) as the regular expression, it should be less restrictive:
Also the value of your "state" looks like a GUID so you can try looking up a guid-like structure instead:
state=([A-Fa-f0-9]{8}[\-][A-Fa-f0-9]{4}[\-][A-Fa-f0-9]{4}[\-][A-Fa-f0-9]{4}[\-]([A-Fa-f0-9]){12})
And last but not the least, by default Regular Expression Extractor looks into response body so you need to change the "Field to check" to Response Headers
More information:
JMeter Regular Expressions
Perl 5 Regex Cheat sheet
Using Regular Expressions to Extract Tokens and Session IDs to Variables

HOw to use Jmeter Variable in REgex?

My regular expression is looks like this "\u003e(\d+)\u003c/td\u003e\u003ctd colName=\"FacilityName\" style=\"text-align:left\"\u003eFAC${JMETERVARIABLE}"
This is not working in Jmeter.Somebody please help me on this
Thanks in Advance
I had the same problem of getting regex to work when the returned text contains '\u003e' etc instead of the normal characters, and in the end I inserted a Beanshell sampler to put the variable ${whatever} together with the rest of the regex string, then passed the entire string as a variable into the regular expression extractor (REE). My jmeter script is on a different machine so please forgive the lack of screenshots.
I got this from another SO answer which i can't now find (do please someone insert the reference if you know it), but in brief it looks something like this (in the large 'Script' window of the Beanshell sampler)
String s = "your regex phrase ${jmeter variable}";
vars.put("RegPhrase",s);
and then in the REE for 'Regular Expression' field you just put ${RegPhrase}
It also has the advantage that the final RegPhrase appears as a variable in the debug PostProcessor, so you can copy and paste it into the RegEx field of the http request output in the view results tree, to test the phrase works with your data, then tweak as required.

Extracting Value In Between Quotes - Regular Expressions

I'm trying to extract a request ID for running load testing on J Meter that I need to use for the subsequent HTTP requests. I'm using the regular expression extractor to do this.
I've been trying for hours and hours to extract the value inside single quotations and have not had any success. The response looks similar to this.
RequestDateTime='2/12/2017 7:19:49 AM' RequestID='1234567' Client="14232" etc...
I want the exact numbers with no quotations around it. The value should be 1234567
I've tried using RequestID='(.*?)' but it gives the entire string whereas I just want the value inside.
Use regular expression RequestID='(\d+)
Template $1$
Match 1
Looking into "RegExp" Tester mode of the View Results Tree listener your regular expression itself is fine:
So my expectation is that your Regular Expression Extractor configuration is not correct, you should get expected value if use something like:
Reference Name: anything meaningful, i.e. RequestID
Regular Expression: RequestID='(.*?)'
Template: $1$
You should be able to refer the extracted value as ${RequestID} later on. Extracted JMeter Variable(s) can be visualised using Debug Sampler
See How to Debug your Apache JMeter Script article to learn more about JMeter tests troubleshooting techniques.
So the following regular expression should do the trick: '(\d*)'
Then Insert a Debug Sampler into your thread so you can see the reference name. The variable you are looking for will have the following name: referencename_g0
The _g0 represents the first group that was matched. If the expression matches other chars in your response, simply use the variable with the correct group number. (e.g _g1 or _g2, etc).
Hope this helps!

Regular expression to check path of url as well as specific parameters

I have url's like the following:
/home/lead/statusupdate.php?callback=jQuery211010657244874164462_1455536082020&ref=e13ec8e3-99a8-411c-be50-7e57991d7acb&status=5&_=1455536082021
I would like a regular expression to use in my Google analytic goal that checks to see that the request uri is /home/lead/statusupdate.php and has ref and status parameter present regardless of what order these parameters are passed and regardless of if there are extra parameters because I really just care about the 2. I have looked at these examples
How to say in RegExp "contain this too"? and Regular Expressions: Is there an AND operator? but I can't seem to adapt the examples given there to work.
Im using this online tool to test http://www.regexr.com/ (perhaps the tool is the buggy one? I'l try in javascript in the mean time)
You can try:
\/home\/lead\/statusupdate\.php\?(ref=|.*(&ref=)).*(&status=)
if the order does not matter, then add the oppostite
\/home\/lead\/statusupdate\.php\?(status=|.*(&status=)).*(&ref=)
all put together
\/home\/lead\/statusupdate\.php\?(((ref=|.*(&ref=)).*(&status=))|((status=|.*(&status=)).*(&ref=)))
try:
(/home/lead/statusupdate.php?A)|(/home/lead/statusupdate.php?B)|(/home/lead/statusupdate.php?C)|(/home/lead/statusupdate.php?D)|(/home/lead/statusupdate.php?E)|(/home/lead/statusupdate.php?F)
Note that here A,B,C,D,E,F are notations for six different permutations for 'callback' string, 'ref' string, 'status' string and '_' string.
Not really elegant but this works:
\/home\/lead\/statusupdate\.php(.*(ref|status)){2}
Looks for /home/lad/statusupdate.php followed by 2x any character followed by ref or status. Admittedly this would be a match for an url with 2x ref or status though.
Demo

How to check for NOT this number in SoapUI Assertion

I am writing some Soap UI tests and am trying to figure out if there is a way with regular expressions to check for a string that does not contain a specific number. In this one case I want to make sure that when I get a response that my recordCount field DOES NOT contain 0. I thought this might be easier but while I can see a way to check for a set of numbers the regular expression for not this doesn't seem to work. Probably only detects characters and not numbers.
My XML contains this:
<recordCount>0</recordCount>
What I want is something like
recordCount>[^0]
so I can make sure recordCount shows up in the response, but also check that at least the first number it finds is not a 0. Is there any way to do this?
Edit: Using SiKing's answer I just used the NotContains to look for recordCount>0 ; this covers the couple of cases where I don't look for specific data only how many records are returned and in those cases it just needs to be more than 0
Why does it have to be regular expression?
You can use either of the following XPath assertions, for all of which the expected result is false:
//*:recordCount = 0
exists(//*:recordCount[text()='0'])
Using regular expressions you could do something like that:
(?s).*<recordCount>[^0]</recordCount>(?s).*
When using regular expressions in an assertion in SoapUI, you have to take whitespace and line breaks into account. In the example code (?s).* works as a wildcard that includes all whitespace and line breaks.