find and replace regex for reformatting the value - regex

I have a text like :value_subvalue that I want to transform to :value[:subvalue].
I have a find & replace field in Coda where I can enter a regex to find and replace.
Any idea how to do this?

You haven't said what language, so this is a generic answer:
Search regex: (:[a-z]+)_([a-z]+)
Replacement: \1[:\2]
If you're doing this in java, the group refs would be $1 and $2

Related

VSCode regex find & replace submatch math?

%s#{fileID: \(213[0-9]*\)#\='{fileID: '.(submatch(1)-1900)#
I am using this regex search and replace command in vim to subtract a constant from each matching id.
I can do the regex find in VSCode but how can I reference the submatch for maths & replace? submatch(1) does not work in VSCode?
Thanks.
Given a regular expression of (foobar) you can reference the first group using $1 and so on if you have more groups in the replace input field.
To augment Benjamin's answer with an example:
Find Carrots(With)Dip(Are)Yummy
Replace Bananas$1Mustard$2Gross
Result BananasWithMustardAreGross
Anything in the parentheses can be a regular expression.
Just to add another example:
I was replacing src attr in img html tags, but i needed to replace only the src and keep any text between the img declaration and src attribute.
I used the find+replace tool (ctrl+h) as in the image:
For beginners, the accepted answer is correct, but a little terse if you're not that familiar with either VSC or Regex.
So, in case this is your first contact with either:
To find and modify text,
In the "Find" step, you can use regex with "capturing groups," e.g. I want to find (group1) and (group2), using parentheses. This would find the same text as I want to find group1 and group2, but with the difference that you can then reference group1 and group2 in the next step:
In the "Replace" step, you can refer to the capturing groups via $1, $2 etc, so you could change the sentence to I found $1 and $2 having a picnic, which would output I found group1 and group2 having a picnic.
Notes:
Instead of just a string, anything inside or outside the () can be a regular expression.
$0 refers to the whole match
In my case $1 was not working, but $0 works fine for my purpose.
In this case I was trying to replace strings with the correct format to translate them in Laravel, I hope this could be useful to someone else because it took me a while to sort it out!
Search: (?<=<div>).*?(?=</div>)
Replace: {{ __('$0') }}
Regex Replace String for Laravel Translation
Another simple example:
Search: style="(.+?)"
Replace: css={css`$1`}
Useful for converting HTML to JSX with emotion/css!
Just another example for someone figuring out.
In this example, I've added #### to the start of the string and placed the first group $1 after that. Everything outside group (.*) is going to be deleted.
<h4.*">(.*)</h4>
#### $1
# before:
<h4 id="extract-inline-json-with-regex">Extract inline JSON data with Regex</h4>
# after:
#### Extract inline JSON data with Regex

How to use RegEx to add "_" between two words with notepad++

I want to use Notepadd++ replace option with regular expression to accomplish this:
From: IntegrationName
To: Integration_Name
How can do this ?
My RegEx to search is: .[A-Z]
this finds: "oN"
But I don't know what to put in the replace box so it will only add "_" between the "o" and the "N"...
Another solution using lookaround assertions would be:
(?<=[a-z])(?=[A-Z])
and replace with
_
Note: The "Match case" option needs to be active, otherwise Notepad++ will find a match between every two letters.
This regex will find every position where a lowercase is on the left and an uppercase is on the right.
You can make use of capture groups. If I have to take your current attempt and edit it as little as possible, you would get:
(.)([A-Z])
This will store the match of . into $1 and the uppercase letter in $2, thus, you can use the following in the replace entry box:
$1_$2
I know you've accepted an answer, but when I ran it, I got From: _Integration_Name
Here's my idea;
(:\s)(.{1})([a-z]*)([A-Z]{1})
And use the following replace
$1$2$3_$4
I finaly did it like this:
Find: ([a-z])([A-Z])
Replace with: $1_$2

Sublime Text 2 - Regular Expression Find and Replace

I am looking for a solution to find and replace the formatting of many prices within one of my documents.
I currently have prices that are formatting like so: $60 and would like to change the formatting to: 60 $
The following 'Find What' works to find the first format \$\d{0,2} but not too sure about what to 'Replace With'.
Is there a way to preserve the number?
Thank you.
Try this:
find: \$(\d{0,2})
replace: \1 $
Option+Cmd+F:
Place into the find field:
\$([0-9]{0,2})
Place into the replace field:
\1 \$
The backslash + number indicated which capture group to place in there.

Using parameters in regular expressions

I am trying to use NotePad++ to do a search and replace using the regex function that replaces a string of characters but maintains one part of the string. My description isn't very good so perhaps it will be better if I just give you the example.
Throughout and xml doc I have the following elements...
<AddressLine3>addressLine3>
<AddressLine2>addressLine2>
I want to replace these with
<addressLine3> <addressLine2>
So I need to maintain the address line number.
I know that
AddressLine([0-9]{1})>addressLine([0-9]{1})
is a valid reg ex but I'm not sure what to put in the replace with section to tell it to maintain whatever value was found by ([0-9]{1}).
Thanks.
It's \{number of the group}, so \1, \2, ...
Edit with your precisions (I changed a bit your regex for simpler groups):
(AddressLine[0-9]{1}>)(addressLine[0-9]{1}) is replaced by \2
You can capture it in group and replace them
Find:(AddressLine[0-9])>(addressLine[0-9])
Replace:$1 <$2
Find what : (<AddressLine\d>)AddressLine\d
Replace by: $1
You have to select the choice regular expression

Is it possible to use regexp as variables to do find and replace in sublime text?

I have a regexp search that looks like this:
'\d*.\d*, \d*.\d*'
I want to change the ' and the ,, but keep the d*. Is this possible in sublime text? If not, what's the easiest way to do this?
This works the same way as most other places where regular expressions are available;
Group the parts of the pattern that you want to keep, and reference them in the replacement
Pattern: '(\d*.\d*), (\d*.\d*)'
Replacement: $1 $2
This example will remove the ' and the ,