Select text between brackets starting with ^{text to be selected} using regex - regex

Eg: sdadjaskdhas ^{sdassad ^{/frac{}{} s dcds &} dsdsadsa} ddsfsafdsfs
Answer should be: {sdassad ^{/frac{}{} s dcds &} dsdsadsa}
it should include any character between brackets

Use backspace to escape the ^,{,} characters as they belong to regex. .* to select any number of any characters.
Here is your answer: \^\{.*\}
EDIT:
You can use this regex [^\^]\^{(\S)} , print the match, trim the string. Loop over this you find all matches in a string.

Related

Regex replace one value between comma separated values

I'm having a bunch of comma separated CSV files.
I would like to replace exact one value which is between the third and fourth comma. I would love to do this with Notepad++ 'Find in Files' and Replace functionality which could use RegEx.
Each line in the files look like this:
03/11/2016,07:44:09,327575757,1,5434543,...
The value I would like to replace in each line is always the number 1 to another one.
It can't be a simple regex for e.g. ,1, as this could be somewhere else in the line, so it must be the one after the third and before the fourth comma...
Could anyone help me with the RegEx?
Thanks in advance!
Two more rows as example:
01/25/2016,15:22:55,276575950,1,103116561,10.111.0.111,ngd.itemversions,0.401,0.058,W10,0.052,143783065,,...
01/25/2016,15:23:07,276581704,1,126731239,10.111.0.111,ll.browse,7.133,1.589,W272,3.191,113273232,,...
You can use
^(?:[^,\n]*,){2}[^,\n]*\K,1,
Replace with any value you need.
The pattern explanation:
^ - start of a line
(?:[^,\n]*,){2} - 2 sequences of
[^,\n]* - zero or more characters other than , and \n (matched with the negated character class [^,\n]) followed with
, - a literal comma
[^,\n]* - zero or more characters other than , and \n
\K - an operator that forces the regex engine to discard the whole text matched so far with the regex pattern
,1, - what we get in the match.
Note that \n inside the negated character classes will prevent overflowing to the next lines in the document.
You can replace value between third and fourth comma using following regex.
Regex: ([^,]+,[^,]+,[^,]+),([^,]+)
Replacement to do: Replace with \1,value. I used XX for demo.
Regex101 Demo
Notepad++ Demo

match everything but particular words using regex

var text = "!john david sue !jay";
I want to get all strings except words that begin with "!" like "!john" and
"!jay"...As a result i should get "david" and "sue" strings in this case.
Why doesn't this regex work?
/[^(![a-z0-9]+)]/
You can use negative lookbehind:
(?<!!)\b\w+
See Regex DEMO
Your regex does not work because your pattern is inside [^ ] (negated character set). All characters are matched literally in a negated char set i.e ( will match a literal ( instead of grouping bracket, etc.

Remove all characters after a certain match

I am using Notepad++ to remove some unwanted strings from the end of a pattern and this for the life of me has got me.
I have the following sets of strings:
myApp.ComboPlaceHolderLabel,
myApp.GridTitleLabel);
myApp.SummaryLabel + '</b></div>');
myApp.NoneLabel + ')') + '</label></div>';
I would like to leave just myApp.[variable] and get rid of, e.g. ,, );, + '...', etc.
Using Notepad++, I can match the strings themselves using ^myApp.[a-zA-Z0-9].*?\b (it's a bit messy, but it works for what I need).
But in reality, I need negate that regex, to match everything at the end, so I can replace it with a blank.
You don't need to go for negation. Just put your regex within capturing groups and add an extra .*$ at the last. $ matches the end of a line. All the matched characters(whole line) are replaced by the characters which are present inside the first captured group. .
matches any character, so you need to escape the dot to match a literal dot.
^(myApp\.[a-zA-Z0-9].*?\b).*$
Replacement string:
\1
DEMO
OR
Match only the following characters and then replace it with an empty string.
\b[,); +]+.*$
DEMO
I think this works equally as well:
^(myApp.\w+).*$
Replacement string:
\1
From difference between \w and \b regular expression meta characters:
\w stands for "word character", usually [A-Za-z0-9_]. Notice the inclusion of the underscore and digits.
(^.*?\.[a-zA-Z]+)(.*)$
Use this.Replace by
$1
See demo.
http://regex101.com/r/lU7jH1/5

Parameterize block of text using Notepad++

I have the following text in Notepad++
A
B
C
D
I would like to "parameterize" this text and turn it into this using a regex or some other native Notepad++ command(s) or plugin:
'A', 'B', 'C', 'D'
Note that I want the end text to be on one line and no trailing comma, if possible. This question gets me close but I am left with a trailing comma and the text is not compacted to one line. Is there anyway to accomplish this in Notepad++ without using a macro?
Try this in Regex Search Mode.
Search for (\w)\r\n
Replace with ('\1', )
But you will have to remove the space and a comma manually from the end of the line.
You can do it in two steps:
Search for e.g. (\w+) and replace with '$1'
The \w+ will find the letters (and digits and the underscore), at least one.
Search for (\s+) and replace with ,
\s+ will find whitespace characters, that means here the newline characters at the end of a row. If you have whitespace in your text, you want to keep, use [\r\n]+ instead.
This way, if there is no newline after the last letter, there will be no trailing comma.

Regular Expression to replace "\r\n" only if not preceded by "." in a string

Could you please provide a regular expression that I can use to replace all \r\n in a string, only when \r\n is not preceded by .?
To match a character, you can place the character inside brackets such as [.]. To not match it, you can start the character list with a caret such as [^.]. This will effectively match any character that is not a ..
For your specific case, you want to match \r\n that doesn't have a . in front of it. Combined with the above, you can use:
[^.]\r\n
To replace it, you'll want to "capture" the character that is not-a-period to keep it in the replacement. You can capture it by wrapping it in parentheses, such as ([^.]).
Using Regex.Replace(), it would be something like:
yourString = Regex.Replace(yourString, #"([^.])\r\n", "$1");
The $1 is the character matched and is re-replaced back into the string, now stripped of the \r\n.
I think this would work
Regex.Replace(input, #"([^.]?)\r\n", "$1");