1

i have found many similar posts, but non of them answers my question. I would like to replace/remove/change open and close tag with a specific key word. in this case i am trying to remove all tags whit href="#" in it....

<a href="#">leave this text</a>
<a class="" id="" href="#">leave this text too</a>

<a href="http://......">Dont remove this tag!</a>

I have this code, but i cant figure out how to leave the text...

find: <a[^h]*href="#"[^>]*> (skip content) </a>
replace: (same content)
or
replace: <a href="somthing"> (same content) </a>
3
  • By note++ you mean notepad++?
    – DavidPostill
    Commented Oct 14, 2015 at 10:26
  • Yes, im sorry. NotePad++
    – Alexandr
    Commented Oct 14, 2015 at 10:29
  • That was too easy! ;)
    – DavidPostill
    Commented Oct 14, 2015 at 10:35

2 Answers 2

0

I am trying to remove all tags containing href="#"

  • Menu "Search" > "Replace" (or Ctrl + H)

  • Set "Find what" to <a .*?href="#">(.*?)</a>

  • Set "Replace with" to \1

  • Enable "Regular expression"

  • Click "Replace All"

    Image

Before:

<a href="#">leave this text</a>
<a class="" id="" href="#">leave this text too</a>
<a href="http://......">Dont remove this tag!</a>

After:

leave this text
leave this text too
<a href="http://......">Dont remove this tag!</a>

As pointed out by AFH in a comment, there is a better regular expression that will catch expression that were not included in the sample data.

  • Set "Find what" to <a .*?href="#" .*?>(.*?)</a>

    This will match lines where there are clauses after the href="#" (and before the first matching >).

    Note:

    It will fail to work correctly if there are any >s in the value field of a subsequent clause (before the > matching <a)


Further reading

2
  • 1
    I can't see any reason why your search string would not have worked with the examples the questioner gave, although his answer below does allow for clauses after the href as well as before: for this you would need <a .*?href="#" .*?>(.*?)</a>. In fact, this should be a better solution, as his would fail if there were another clause containing h before the href (eg in the class or id value). Both would fail if there were > in the value field of a subsequent clause, and I see no easy fix for this (unlikely) case.
    – AFH
    Commented Oct 14, 2015 at 14:47
  • @AFH Agree with all of the above. However, my answer worked with the data the OP provided as input. I will add a note with your regular expression just for completeness. Thanks for your comment.
    – DavidPostill
    Commented Oct 14, 2015 at 14:49
0

Thank you David for the answer! But actually the code: <a .*?href="#">(.*?)</a> did not found any attributes in my file. It may be because of some other configurations or different versions of notepad++. I had to use this code:

 Find:    <a[^h]*href="#"[^>]*>(.*?)</a>
 Replace: <a href="new_url">\1</a>
1
  • My answer was correct with the data you provided as input. I don't believe the version of Notepad++ will make any difference with this kind of regular expression.
    – DavidPostill
    Commented Oct 14, 2015 at 14:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .