How to match begin of expression and exclude it? - regex

I've a string SRE("Documents", with: "For boss") and I want to match string inside "" but without "".
I've come to regex \"([a-zA-Z0-9\s?]+) but in result I can see ["Documents, "For boss].
How the regex should looks like to exclude also first "?

Try "([^"]*)", where [^"] means matching a single character which is not ".

Related

Notepad++ find string in parantheses

I try to fetch the string modlgn_username inside the paranthesis from the following string:
$this->webDriver->findElement(WebDriverBy::id("modlgn_username"))->click();
This is my regular expression:
\$this->webDriver->findElement\(WebDriverBy::id\("([A-z0-9]+)"\)\)->click\(\);
However I get Find: Can't find text \$this->webDriver->findElement(WebDriverBy::id("([A-Za-z0-9])"))->click();
It works in online regex tester though:
https://regex101.com/r/6oDry3/1
Your regex will be like this
(?<=\(\")\w+_\w+(?=\"\))
it checks that from left side of the string will be (" and from right side will be ").
It mach the string you need. Have a look
You have to add underscore in the character class or your regex and A-z is not a correct range, it inludes [\]^_ and backquote:
\$this->webDriver->findElement\(WebDriverBy::id\("([A-Za-z0-9_]+)"\)\)->click\(\);
and this character class can be now reduce to \w:
\$this->webDriver->findElement\(WebDriverBy::id\("(\w+)"\)\)->click\(\);

RegEx to find and replace a pattern in SublimeText

I need to use a Regular Expression in SublimeText for a Find and Replace search.
My search string pattern looks like this:
chrome.i18n.getMessage("nimbusBtnLogin")
in which case I need to replace with:
"nimbusBtnLogin"
I have a GIST here https://gist.github.com/jasondavis/fda85e808a6c8184adad where I have listed the RegEx for a find and replace of HTML form selection option fields, links, and images however I was unable to modify and get working for this pattern above.
Can someone please share the correct RegEx?
You can use
\bchrome\.i18n\.getMessage\("([^"]*)"\)
Replace with $1. See the regex demo
Note:
\bchrome\.i18n\.getMessage\(" - matches literal string (matched as a whole word) chrome.i18n.getMessage(" (special characters are escaped since they must be treated as literals)
([^"]*) - matches and captures into Group 1 any characters other than "
"\) - matches literal ")

RegEx: Match nth occurrence

I have the following string:
_name=aVlTcWRjVG1YeDhucWdEbVFrN3pSOHZ5QTRjOEJZZmZUZXNIYW1PV2RGOWYrczBhVWRmdVJTMUxYazVBOE8zQ3JNMmNVKzJLM2JJTzFON3FiLzFHUE0xY0pkdz09LS1jbkkwaWoxUUl3YVhMMkhtZHpaOW13PT0"%"3D--57356371d167f"
I want to match everything between = and the end " (note there are other quotes after this so I can't just select the last ").
I tried using _name=(.*?)" but there are other quotes in the string as well. Is there a way to match the 3rd quote? I tried _name=(.*?)"{3} but the {3} matches for the quotes back to back, i.e. """
You can try it here
You can use this regex:
\b_name=(?:[^"]*"){3}
RegEx Demo
RegEx Details:
\b_name: Match full word _name:
=: Match a =
(?:[^"]*"){3}: Match 0 or more non-" characters followed by a ". Repeat this group 3 times.
If want to match everything between the first and the third(!) double quote (the third isn't necessarily the last, you told), you can use a pattern like this:
$string = '_name=foo"bar"test" more text"';
// This pattern will not include the last " (note the 2, not 3)
$pattern = '/_name=((.*?"){2}.*?)"/';
preg_match($pattern, $string, $m);
echo $m[1];
Output:
foo"bar"test
Original answer:
I'm not sure if I got you correctly, but it sounds like you want to perform a so called greedy match, meaning you want to match the string until the last " regardless whether the string contains multiple "s.
To perform a greedy match, just drop the ?, like this:
_name=(.*)"
You can try it here: https://regex101.com/r/uC5eO9/2

How to create a regex expression on Delphi to remove brackets and quotes

I never used TPerlRegEx before and it is my first time for regex expressions.
I am looking for a small example using TPerlRegEx in Delphi Xe2 to remove the brackets and quotes as follows:
input string:
["some text"]
result:
some text
single line, no nested brackets or quotes. I have used Regexbuddy to create and test the regex however it is not giving me the result.
This works in Regex Buddy:
Regex:
\["(.+?)"\]
Replace:
$1
Use like this:
var
RegEx: TPerlRegEx;
begin
RegEx := TPerlRegEx.Create(nil);
try
Regex.RegEx := '\["(.+?)"\]';
Regex.Subject := SubjectString; // ["any text between brackets and quotes"]
Regex.Replacement := '$1';
Regex.ReplaceAll;
Result := Regex.Subject;
finally
RegEx.Free;
end;
end;
How it works:
Match the character "[" literally «\[»
Match the character """ literally «"»
Match the regular expression below and capture its match into backreference number 1 «(.+?)»
Match any single character that is not a line break character «.+?»
Between one and unlimited times, as few times as possible, expanding as needed (lazy) «+?»
Match the character """ literally «"»
Match the character "]" literally «\]»
Created with RegexBuddy
Examples abound, including one in the documentation, so I assume the question is really about what values to assign to which properties to get the specific desired output.
Set the RegEx property to the regular expression that you want to match, and set Replacement to the value you want the matched sequences to be replaced with. One way might be to set RegEx to \[|\]|" and Replacement to the empty string. That will remove all brackets and quotation marks from anywhere in the string.
To instead remove just the pairs of brackets and quotation marks that surround the string, try setting RegEx to ^\["(.*)"\]$ and Replacement to \1. That will match the entire string, and then replace it with the first matched subexpression, which excludes the four surrounding characters. To turn a string like ["foo"] ["bar"] into foo bar, then remove the start and end anchors and add a non-greedy qualifier: \["(.*?)"\].
Once you've set up the regular expression and the replacement, then you're ready to assign Subject to the string you want to process. Finally, call ReplaceAll, and when it's finished, the new string will be in Subject again.

regex to match "number,URL"

I am not experienced with regex and lost whole day trying to match this:
343,SOME_URL
43555,SOME_URL
I need expression to match number and "," so I can cut it something like
343,SOME_URL to become only SOME_URL
Use regex:
[0-9]+, or \d+,
and replace it with empty string ("").