|
it
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
remove the content in between tags
How can I remove the content in between tags? I have a page that has
several custom tags: <!--tag:1--> Content 1 <!--/tag:1--> <br> <!--tag:2--> Content 2 <!--/tag:2--> <br> <!--tag:3--> Content 3 <!--/tag:3--> If I only wanted to see the contents of tag 2 for example, how could I strip out 1 and 3? Its going to have to be a combination of InStr() to get the positions of the
end of the first tag and the start of the second. Then probably just a couple Left() and Right() calls to recombine. Show quote "j1c" <just1co***@yahoo.ca> wrote in message news:1110896036.244414.219410@g14g2000cwa.googlegroups.com... > How can I remove the content in between tags? I have a page that has > several custom tags: <!--tag:1--> Content 1 <!--/tag:1--> <br> > <!--tag:2--> Content 2 <!--/tag:2--> <br> <!--tag:3--> Content 3 > <!--/tag:3--> If I only wanted to see the contents of tag 2 for > example, how could I strip out 1 and 3? > Have you tried?
Break it into steps. 1) grab everything to the left of your opening tag. 2) grab everything to the right of your closing tag. 3) recombine. Show quote "j1c" <just1co***@yahoo.ca> wrote in message news:1110897024.045387.24690@f14g2000cwb.googlegroups.com... > Could you give an example? > I used a regex to do it, however I need to do a 'reverse' loop? :)
So, if I have 10 section tags, but only want to see 1,5,7 how can I loop through removing any matches that do not equal 1,5 or 7 ick.... Since you know that they all start and end with < and > you'll have
to find every instance, check it against your list and keep/dump accordingly. Sounds like a royal pain.... what is it you are having to do? I mean maybe there is a better way. Show quote "j1c" <just1co***@yahoo.ca> wrote in message news:1110899627.718726.49130@o13g2000cwo.googlegroups.com... >I used a regex to do it, however I need to do a 'reverse' loop? :) > > So, if I have 10 section tags, but only want to see 1,5,7 how can I > loop through removing any matches that do not equal 1,5 or 7 > ;) yeah it is..
I am getting passed a large string of HTML that will be displayed on a site or in an email. This string has up to 10 openning and closing tags like: <!--tag:1--> bla bla bla <!--/tag:1--> I am also passed a recordset that has a delimitted list of params (1,5,7) Those params match tags that are to be displayed. The rest are to be stripped. My regex's are a little rusty, but can I not match everything that != the params? This is what I've got on the go now: Dim strpage strpage = "a bunch of html..." Dim sec sec = Split(sections, ",") For i = LBound(sec) To UBound(sec) Set re1 = New RegExp re1.IgnoreCase = True re1.Global = False re1.Pattern = "<!--tag:" & sec(i) & ">(.*)?<!--/tag:" & sec(i) & ">" Set Matches = re1.Execute(strpage) strpage = Replace(strpage, Matches.Item(0).SubMatches(0), "") Next ick indeed...
Sorry to say I'm no regex master... Maybe one of the others can get you closer. Sorry I couldnt.... From the sound of it though, there aren't too many options since you dont control the incoming file format... Show quote "j1c" <just1co***@yahoo.ca> wrote in message news:1110901724.642449.220500@g14g2000cwa.googlegroups.com... > ;) yeah it is.. > > I am getting passed a large string of HTML that will be displayed on a > site or in an email. This string has up to 10 openning and closing tags > like: > <!--tag:1--> bla bla bla <!--/tag:1--> > > I am also passed a recordset that has a delimitted list of params > (1,5,7) > > Those params match tags that are to be displayed. The rest are to be > stripped. > > My regex's are a little rusty, but can I not match everything that != > the params? > > This is what I've got on the go now: > Dim strpage > strpage = "a bunch of html..." > Dim sec > sec = Split(sections, ",") > For i = LBound(sec) To UBound(sec) > Set re1 = New RegExp > re1.IgnoreCase = True > re1.Global = False > re1.Pattern = "<!--tag:" & sec(i) & ">(.*)?<!--/tag:" & sec(i) & ">" > Set Matches = re1.Execute(strpage) > > strpage = Replace(strpage, Matches.Item(0).SubMatches(0), "") > > Next > "j1c" <just1co***@yahoo.ca> wrote in message Can you changenews:1110896036.244414.219410@g14g2000cwa.googlegroups.com... > How can I remove the content in between tags? I have a page that has > several custom tags: <!--tag:1--> Content 1 <!--/tag:1--> <br> > <!--tag:2--> Content 2 <!--/tag:2--> <br> <!--tag:3--> Content 3 > <!--/tag:3--> If I only wanted to see the contents of tag 2 for > example, how could I strip out 1 and 3? > <!--tag:1--> Content 1 <!--/tag:1--> to <span id="tag1"> Content 1 </span> if so then will the following help? Watch for word-wrap. <html> <head> <title>tags.htm</title> <script type="text/javascript"> function tags(what) { document.getElementById("tag"+what).style.visibility = "hidden"; } </script> </head> <body> <span id="tag1"> Content 1 </span> <br> <span id="tag2"> Content 2 </span> <br> <span id="tag3"> Content 3 </span> <input type="button" value="Hide 1" onclick="tags(1)"> <input type="button" value="Hide 2" onclick="tags(2)"> <input type="button" value="Hide 3" onclick="tags(3)"> </body> </html> j1c wrote:
> How can I remove the content in between tags? I have a page that has Load it into frontpage 2003. It has more advanced editing features> several custom tags: <!--tag:1--> Content 1 <!--/tag:1--> <br> > <!--tag:2--> Content 2 <!--/tag:2--> <br> <!--tag:3--> Content 3 > <!--/tag:3--> If I only wanted to see the contents of tag 2 for > example, how could I strip out 1 and 3? such as this. "j1c" <just1co***@yahoo.ca> wrote in message <%news:1110896036.244414.219410@g14g2000cwa.googlegroups.com... > How can I remove the content in between tags? I have a page that has > several custom tags: <!--tag:1--> Content 1 <!--/tag:1--> <br> > <!--tag:2--> Content 2 <!--/tag:2--> <br> <!--tag:3--> Content 3 > <!--/tag:3--> If I only wanted to see the contents of tag 2 for > example, how could I strip out 1 and 3? > Dim s, arr, re s = _ "<!--tag:1-->Content 1<!--/tag:1--><br>" &_ "<!--tag:2-->Content 2<!--/tag:2--><br>" &_ "<!--tag:3-->Content 3<!--/tag:3--><br>" &_ "<!--tag:4-->Content 4<!--/tag:4--><br>" &_ "<!--tag:5-->Content 5<!--/tag:5--><br>" &_ "<!--tag:6-->Content 6<!--/tag:6--><br>" &_ "<!--tag:7-->Content 7<!--/tag:7--><br>" &_ "<!--tag:8-->Content 8<!--/tag:8--><br>" &_ "<!--tag:9-->Content 9<!--/tag:9--><br>" &_ "<!--tag:10-->Content 10<!--/tag:10-->" arr = Array(1,5,7) Set re = New RegExp re.Global = True re.IgnoreCase = True re.Pattern = "(<!--tag:(?!(" & Join(arr,"|") & ")-)(\d+)-->).*(<!--/tag:\3-->)" Response.Write re.Replace(s,"$1$4") %> Show quote
"Chris Hohmann" <nospam@thankyou.com> wrote in message You may want to throw in a non-greedy clause if it's possible that tags news:euEhjyaKFHA.656@TK2MSFTNGP14.phx.gbl... > "j1c" <just1co***@yahoo.ca> wrote in message > news:1110896036.244414.219410@g14g2000cwa.googlegroups.com... >> How can I remove the content in between tags? I have a page that has >> several custom tags: <!--tag:1--> Content 1 <!--/tag:1--> <br> >> <!--tag:2--> Content 2 <!--/tag:2--> <br> <!--tag:3--> Content 3 >> <!--/tag:3--> If I only wanted to see the contents of tag 2 for >> example, how could I strip out 1 and 3? >> > > <% > Dim s, arr, re > s = _ > "<!--tag:1-->Content 1<!--/tag:1--><br>" &_ > "<!--tag:2-->Content 2<!--/tag:2--><br>" &_ > "<!--tag:3-->Content 3<!--/tag:3--><br>" &_ > "<!--tag:4-->Content 4<!--/tag:4--><br>" &_ > "<!--tag:5-->Content 5<!--/tag:5--><br>" &_ > "<!--tag:6-->Content 6<!--/tag:6--><br>" &_ > "<!--tag:7-->Content 7<!--/tag:7--><br>" &_ > "<!--tag:8-->Content 8<!--/tag:8--><br>" &_ > "<!--tag:9-->Content 9<!--/tag:9--><br>" &_ > "<!--tag:10-->Content 10<!--/tag:10-->" > > arr = Array(1,5,7) > > Set re = New RegExp > re.Global = True > re.IgnoreCase = True > re.Pattern = "(<!--tag:(?!(" & Join(arr,"|") & > ")-)(\d+)-->).*(<!--/tag:\3-->)" > > Response.Write re.Replace(s,"$1$4") > %> > would repeat. The new pattern would be re.Pattern = "(<!--tag:(?!(" & Join(arr,"|") & ")-)(\d+)-->).*?(<!--/tag:\3-->)" HTH -Chris Hohmann Thanks for the tips - it is working very well.
1 thing though - in the RegEx what would I need to change to allow either: <!--tag:01-->content<!--/tag:01--> OR <!--tag:01--> content <!--/tag:01--> Show quote
"j1c" <just1co***@yahoo.ca> wrote in message <%news:1110990568.790279.32780@g14g2000cwa.googlegroups.com... > Thanks for the tips - it is working very well. > > 1 thing though - in the RegEx what would I need to change to allow > either: > > <!--tag:01-->content<!--/tag:01--> > > OR > > <!--tag:01--> > content > <!--/tag:01--> > Dim s, arr, re s = _ "<!--tag:1-->Content 1<!--/tag:1--><br>" &_ "<!--tag:2-->Content 2<!--/tag:2--><br>" &_ "<!--tag:3-->Content 3<!--/tag:3--><br>" &_ "<!--tag:4-->Content 4<!--/tag:4--><br>" &_ "<!--tag:5-->Content 5<!--/tag:5--><br>" &_ "<!--tag:6-->Content 6<!--/tag:6--><br>" &_ "<!--tag:7-->Content 7<!--/tag:7--><br>" &_ "<!--tag:8-->Content 8<!--/tag:8--><br>" &_ "<!--tag:9-->Content 9<!--/tag:9--><br>" &_ "<!--tag:10-->" & vbCRLF & "Content 10" & vbCRLF & "<!--/tag:10-->" arr = Array(1,5,7)Set re = New RegExp re.Global = True re.IgnoreCase = True re.MultiLine=True re.Pattern = "(<!--tag:(?!(" & Join(arr,"|") & ")-)(\d+)-->)(.|\n)*?(<!--/tag:\3-->)" Response.Write re.Replace(s,"$1$5") %> |
|||||||||||||||||||||||