Why is this regex match failing [duplicate] - regex

This question already has answers here:
Difference between std::regex_match & std::regex_search?
(2 answers)
Closed 5 years ago.
I am using the following code and the regex match is failing
std::regex reg("^Program Files");
if(std::regex_match("Program Files (x86)",reg)
{
return true;
}
I tried this regex here and it seems to work. Any suggestions why my if condition is not returning true ?

You want regex_search(), not regex_match(). The regex_match() function always matches against the complete string.

Related

Regex for substring match [duplicate]

This question already has answers here:
Regex for string contains?
(5 answers)
Closed 7 months ago.
I have list of strings
03000_textbox (57447),
03990_textbox (57499),
03000_textnewbox (57447)
I want to use regex to capture 1st and 2nd elements of list.
Anything that contains substring textbox i.e.
03000_textbox (57447)
03990_textbox (57499)
Here is the regex you're looking for :
[0-9]+_textbox \([0-9]+\)
Live sample : https://regex101.com/r/2oiwcF/1
Don't forget to put a global (g) flag so you can get every match and loop into.

Regex check return true for " [duplicate]

This question already has answers here:
Regular expression which matches a pattern, or is an empty string
(5 answers)
Closed 2 years ago.
I have /^\w+( \w+)*$/
It tests for one space between words, and no leading or trailing spaces.
However, it fails on an edge case where it is passed just the blank string "
I have tried:
/^\w"+( \w+)*$/
/^\w\"+( \w+)*$/
/^\w|"+( \w+)*$/
but then it fails my other tests.
Any thoughts are appreciated! Thanks!
You can just add an alternation for the blank:
^$|^\w+( \w+)*$
See live demo.
IMHO it's easy to read and understand.

Regex - get first occurrence [duplicate]

This question already has answers here:
My regex is matching too much. How do I make it stop? [duplicate]
(5 answers)
Closed 5 years ago.
I have the following string:
EN=sdfsdf, CN=User Name, CN=Users, DC=domain, DC=co, DC=il
I need to return the first string that starts with "CN=" and ends with an ",".
In this case I need to return "User Name".
'CN=.*,'
returns
"CN=User Name, CN=Users, DC=domain, DC=co,"
How can I get the just the first occurrence?
You will need the non-greedy option in your Regex:
CN=.*?,
See also How can I write a regex which matches non greedy?

What does this regular expression mean - '(?<word'? [duplicate]

This question already has answers here:
Reference - What does this regex mean?
(1 answer)
Can I use named groups in a Perl regex to get the results in a hash?
(5 answers)
Closed 5 years ago.
I found this regular expression in Raisin code:
my ($a, $b, $r) = ("(?<$token>", ')', undef);
In this case $token is some word (param name). This code used in functon for creating regular expression. Sample result for /users/:id is:
/users/(?<id>[^/]+?)(?:\.[^.]+?)?
I dont understand what does its mean: (?<id> ?
I know positive and negative look-behind - (?<= and (?<!. But i don`t know this.

boost regex_search - matching up to the first occurrence of a character [duplicate]

This question already has answers here:
My regex is matching too much. How do I make it stop? [duplicate]
(5 answers)
Closed 5 years ago.
I'm looking for a solution that matches the first occurrence of a specific character, say a "<" sign:
This is my code:
std::string sRegex("a-color-price'.*\\$(.*?)<");
boost::regex regex(sRegex, boost::regex::icase);
std::string sStr("<span class='a-color-price'>$8.36</span></div> $7.99 per month\" \"cartContent\":{\"html\":\"<div id='nav-cart-flyout' </sdd>");
boost::cmatch result;
if (boost::regex_search(sStr.c_str(), result, regex))
{
std::string sResult(result[1].first, result[1].second);
}
I expect sResult to be "8.36" and instead it contains this string: "7.99 per month" "cartContent":{"html":""
Appreciate your help.
you are looking for a $ in a non lazy way (match and backtrace) make the .* a .*? and it matches the first time it finds a $ occures
click here to see a demo of it