I would like to replace all names in an XML file tagged by with let’s say xyz. In other words, replace everything (including whitespace) between the tags. What am I doing wrong?
Search: (<name>)(.*)(</name>)
Replace: \1xyz\3
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
You are trying to parse XML with regular expressions.
However, what you are doing wrong anyway is using a greedy repetition. This will go all the way from the first
<name>to the very last</name>(even if they do not belong together), because the.*will try to consume as much as possible while still fulfilling the match condition.. Use this instead:Or to be on the safe side you can also escape the
<and>, since they are meta-characters in some specific cases (not in this one though):In both cases, this makes the
.*ungreedy, i.e. it will consume as little as possible.And make sure you upgrade to Notepad++ 6, because before that there were a few issues with Notepad++’s regex engine.
Lastly, as hoombar pointed out in a comment
.by default matches every character except line break characters. In Notepadd++ you can change this behavior by ticking the. matches newlinecheckbox.