How to use reg expression with multiple values? - regex

I have multiple products on a website and each product has following info:
ProductId
ProductName
ProductPrice
I know how to use it for a single value like ProductId, but how should I use it for all the values?
Example: I select product1 from a list and then the other fields should be automatically updated, too.

JMeter's regular expression extractor stores match groups as JMeter Variables in form of
reference name -> underscore -> match number -> underscore -> group number
For example, if you have the following Regular Expression Extractor configuration:
Reference Name: LINK
Regular Expression: (.+?)
Template: $1$
And add it as a Post Processor to i.e. HTTP Request to http://example.com you will receive the following variables:
LINKS_1=http://www.iana.org/domains/example
LINKS_1_g=2
LINKS_1_g0=More information...
LINKS_1_g1=http://www.iana.org/domains/example
LINKS_1_g2=More information...
So you'll be able to access link "href" attribute as ${LINKS_1_g1} and link text as ${LINKS_1_g2}
You should be able to use similar approach for your testing.
See Using RegEx (Regular Expression Extractor) with JMeter guide for more information on the domain.

Related

Extract Splunk domain from payload_printable field with regex

I'm trying to extract a domain from the Splunk payload_printable field (source is Suricata logs) and found this regex is working fine for most of the cases:
source="*suricata*" alert.signature="ET JA3*"
| rex field=payload_printable "(?<dom>[a-zA-Z0-9\-\_]{1,}\.[a-zA-Z0-9\-\_]{2,}\.[a-zA-Z0-9\-\_]{2,})"
| table payload_printable, dom
The regular expression is:
(?<dom>[a-zA-Z0-9\-\_]{1,}\.[a-zA-Z0-9\-\_]{2,}\.[a-zA-Z0-9\-\_]{2,})
For example, if my printable_payload looks like this:
...........^aO+.t....]......$.....mT*l.......&.,.+.0./.$.#.(.'.
...........=.<.5./.
...].........activity.windows.com..........
.................
.......................#...........
The domain "activity.windows.com" is successfully extracted. Now, it doesn't work for such a payload, because the regex matches another part that does not correspond to the domain:
...........^aO+]v;.~........:.Y.zORw._I..K>..&.,.+.0./.$.#.(.'.
...........=.<.5./.
...].........activity.windows.com..........
.................
.......................#...........
It extracts "Y.zORw._I".
Another example:
...........^h.'`.o2...
.y.k>..e.ef...]..8.G..&.,.+.0./.$.#.(.'.
...........=.<.5./.
...p.........arc.msn.com..........
.................
.......................#.........h2.http/1.1...................
I don't know how to do. Thank you for your help.
This regex will match domain names and correctly matches the two examples you gave:
"(?<dom>(?:[a-z0-9](?:[a-z0-9-_]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-_]{0,61}[a-z0-9])"

Pattern only domain and category slug via regular expression

Example URL: https://www.example.com/category_slug/bla-bla-bla
What I need to get: https://www.example.com/category_slug
I was trying to use masks like this [^/]+(/.+)/ and test it via regextester.com, but still no success as this mask selects the whole url https://www.example.com/category_slug/bla-bla-bla
How could I extract it via regular expression?
Thanks

Jmeter Regular expression extractor not getting result in Listener

I am using Regular expression for pattern - and <em>(.+?)</em> for the password
But after running Jmeter I am getting request like below in View result tree Listner -
password=%7BUserid_g1%7D
Value of password is not storing after applying regular expression.
I have also set the variable as - {Userid_g2) in password field.
tell me where I am wrong?
Replace:
{Userid_g2)
by :
${Userid}
_g2 suffix indicates the capturing group of your regexp, can you show it ? there might also be an error there

Jmeter parameter extraction

I am getting a result in my jmeter test that I don't understand:
I am trying to extract the "totalRunning" value from this Json response:
{"notifications":[],"taskNotificationInfo":{"totalRunning":0,"totalCompleted":0,"totalCompletedWithErrors":0,"totalFailed":0,"totalPending":0,"requestTime":1458628767436,"hasRecords":false}}
My regex is configured as following:
Reference Name: TotalRunning
Regular Expression: "totalRunning":"(.+?)"
Template: $1$
Match: 1
Default Value: 1
screen shot:
I keep getting the default value instead of "0" in this case.
Am I extracting it from the wrong place?
Any help would be appreciated.
There is no problem with your regex totalRunning":(.+?),"totalCompleted"
only you need to select radio button Body instead of Body As a Document
refer snapshot:-
Change your regular expression as below:
Regular Expression: "totalRunning":(\d+)
In the question "totalRunning":"(.+?)" is being used as regular expression. Since values of totalRunning is not surrounded by quotes. So none was being matched and default value is being picked.
Below regex can also be used:
"totalRunning":(.+?),
Change your "Field to check" to "Body" as "Body as a document" is for binary files like Word, Excel, PDF, etc. see How to Extract Data From Files With JMeter article for more details. JSON is a usual text so it should be treated as "normal" response.
Also there is a special Post Processor - JSON Path Extractor available via JMeter Plugins project. In case of complex JSON, multiple or conditional matches, etc. it might be better and easier to use it.
The relevant JSONPath expression will be: $..totalRunning[0]

Searching a number in a specific string with regexp in jmeter

I want to find a specific number from a HTML response.
For example, I want to extract 3 from publicationID3publicationID.
Does someone know a solution with regexp?
Add Regular Expression Extractor Post Processor as a child of the request, which returns to you this string.
Configure it as follows:
Reference Name: publicationID (you can use any variable name here)
Regular Expression: publicationID(\d+)publicationID
Template: $1$
other fields can be left blank.
You can later refer publication ID as ${publicationID} or ${__V(publicationID)}
You can see what matches does your Regular Expression return using View Results Tree Listener (select RegExp Tester from dropdown). Another option is Debug Sampler again with combination with View Results Tree.
you can use \d to match a number using regex.