I'm trying to find all values with following pattern :
value="4"
value="403"
value="200"
value="201"
value="116"
value="15"
and replace it with value inside scopes.
I'm using the following regex to find the pattern :
.*"\d+"
How can I do a replacement?
In Notepad++ to replace, hit Ctrl+H to open the Replace menu.
Then if you check the "Regular expression" button and you want in your replacement to use a part of your matching pattern, you must use "capture groups" (read more on google). For example, let's say that you want to match each of the following lines
value="4"
value="403"
value="200"
value="201"
value="116"
value="15"
using the .*"\d+"
pattern and want to keep only the number. You can then use a capture group in your matching pattern, using parentheses (
and )
, like that: .*"(\d+)"
. So now in your replacement you can simply write $1
, where $1 references to the value of the 1st capturing group and will return the number for each successful match. If you had two capture groups, for example (.*)="(\d+)"
, $1
will return the string value
and $2
will return the number.
So by using:
Find: .*"(\d+)"
Replace: $1
It will return you
4
403
200
201
116
15
Please note that there many alternate and better ways of matching the aforementioned pattern. For example the pattern value="([0-9]+)"
would be better, since it is more specific and you will be sure that it will match only these lines. It's even possible of making the replacement without the use of capture groups, but this is a slightly more advanced topic, so I'll leave it for now :)
psxls gave a great answer but I think my Notepad++ version is slightly different so the $ (dollar sign) capturing did not work.
I have Notepad++ v.5.9.3 and here's how you can accomplish your task:
Search for the pattern: value=\"([0-9]*)\" And replace with: \1 (whatever you want to do around that capturing group)
Ex. Surround with square brackets
[\1] --> will produce value="[4]"
\1
Helped me to keep the number but remove the quote behind it. I had arround 7400 lines in a document like tablename.columnname = '12345'
. The first quote was easy to remove, the second was done using your \1
in the replace textbox. Thanks, +1
Replace (.*")\d+(")
With $1x$2
Where x
is your "value inside scopes".
I have Notepad++ v6.8.8
Find: [([a-zA-Z])]
Replace: [\'\1\']
Will produce: $array[XYZ] => $array['XYZ']
Find: value="([\d]+|[\d])"
Replace: \1
It will really return you
4
403
200
201
116
15
js:
a='value="4"\nvalue="403"\nvalue="200"\nvalue="201"\nvalue="116"\nvalue="15"';
a = a.replace(/value="([\d]+|[\d])"/g, '$1');
console.log(a);
Success story sharing
$1
didn't work for me. I used\1
instead and that worked.\1
Works in all versions of Notepad++.$1
only works in the newer ones.Hex Editor
plugin. In hex view mode Notepad++ doesn't show theRegular Expression
option for Search/Replace. In text view mode I do see theRegular Expression
option for Search/Replace. I'm using Notepad++ Version 6.9.2, which is the current version at this time.