I've read about 15 tutorials on regular expression however I'm clearly not getting as I've been unable to tailor it to my problem.

I have one set of code which would be found in many different documents. There may be variants of these with different content between the two anchor tags, but here is one variant (the others are all of similar form).

[anchor=ad1][img]http://i.imgur.com/48rwaraw.png[/img] 
                                 [URL=http://goo.gl/Ii3WNz][img]http://i.imgur.com/rBbf7nM.png[/img][/URL]
                                                 [size=7pt]Advertised sites are not endorsed and may be unsafe, untrustworthy, or illegal in your jurisdiction. [url=http://goo.gl/aw52j52]Advertise here.[/url][/size]
[img]http://i.imgur.com/48rwaraw.png[/img][anchor=ad1end]

I want to be able to replace everything between the anchor tags, ie where my * is here:

[anchor=ad1]*[anchor=ad1end]

The replacement would include similar characters to the original, if that makes a difference. I just can't seem to get the regular expression stuff to find the correct string, nevermind replace it with another. Thanks for the help.

Edit: Using ToolBucket to use multiline

up vote 3 down vote accepted

Find and Replace multiline string of text between tags

Solution #1

Use the following regex in Find what: \[anchor=ad1\](.*?)\[anchor=ad1end\],
Replace with: [anchor=ad1]replace[anchor=ad1end]
and select Regular expression and [x] . matches newline

Notepad++ find and replace regex example

Sample data for testing:

[anchor=ad1]some multiline string of text
   that should be replaced[anchor=ad1end]
[anchor=ad1][img]http://i.imgur.com/some_image.png[/img]
   another one multiline string of text
   that should be replaced[anchor=ad1end]
...

Solution #2

A little more advanced solution. This requires Notepad++ v6.0 or above.

Find what: (?<=\[anchor=ad1\]).*?(?=\[anchor=ad1end\])
Replace with: replace
select Regular expression and [x] . matches newline
Important Note: Replace button is NOT working in Notepad++ v6.1.6, but the Replace All works just fine.

enter image description here

  • 1
    Perfect, thanks. I was really close to this, I think I just had one character different yet it totally ruined it. – Adam Feb 19 '15 at 14:10
  • @Adam what did you have? – barlop Jan 4 '17 at 11:50

You can include the beginning and ending tags into your search query. Then use RegEx to capture everything in between with the .*

[anchor=ad1].*[anchor=ad1end]

The key is to ensure you check ". matches newline". See screenshot below.

Screenshot of Notepad++ showing regex

  • 1
    This does not give me the expected result, instead it finds all results after the opening [ character, and goes on to find other varients (ad2 etc) all the way until the character before the final ] at anchor=ad3. – Adam Feb 19 '15 at 13:00

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.