Forum Moderators: open

Message Too Old, No Replies

regex.replace conundrum

         

paul_owen

11:54 pm on Oct 13, 2009 (gmt 0)

10+ Year Member



I am have a spot of bother with a regular expression. It is not matching/replacing ALL of the matching patterns in the input string. Only the last one.

My input data (tmpStr) is:

<root>
<Fullsize><img alt="pic_01.jpg" src="/Games/images/pic_01.jpg" /></Fullsize>
<Fullsize><img alt="pic_02.jpg" src="/Games/images/pic_02.jpg" /></Fullsize>
<Fullsize><img alt="pic_03.jpg" src="/Games/images/pic_03.jpg" /></Fullsize>
<Fullsize><img alt="pic_04.jpg" src="/Games/images/pic_04.jpg" /></Fullsize>
<Fullsize><img alt="pic_05.jpg" src="/Games/images/pic_05.jpg" /></Fullsize>
<Fullsize><img alt="pic_06.jpg" src="/Games/images/pic_06.jpg" /></Fullsize>
<Fullsize><img alt="pic_07.jpg" src="/Games/images/pic_07.jpg" /></Fullsize>
<Fullsize><img alt="pic_08.jpg" src="/Games/images/pic_08.jpg" /></Fullsize>
</root>

my regex code is:

tmpStr = tmpStr.replace( """ />", "" ) ' this just replaces the bit at the end of the image URL

dim rgx as new regex( "<img\salt=\"".*src=\""" )
imageXml = rgx.replace( tmpStr, "" )

the result is:

<root>
<Fullsize>/Games/images/pic_08.jpg</Fullsize>
</root>

But it _should_ be, or at least, I would like it to be:

<root>
<Fullsize>/Games/images/pic_01.jpg</Fullsize>
<Fullsize>/Games/images/pic_02.jpg</Fullsize>
<Fullsize>/Games/images/pic_03.jpg</Fullsize>
<Fullsize>/Games/images/pic_04.jpg</Fullsize>
<Fullsize>/Games/images/pic_05.jpg</Fullsize>
<Fullsize>/Games/images/pic_06.jpg</Fullsize>
<Fullsize>/Games/images/pic_07.jpg</Fullsize>
<Fullsize>/Games/images/pic_08.jpg</Fullsize>
</root>

Am I missing something really simple here?

Thanks,
Paul.

marcel

7:02 am on Oct 14, 2009 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



I just tested your code, and it seems to be working fine here, the only thing that might be different is that I am reading the xml from a text file, here is the code:

Dim tmpStr As String = New StreamReader(Server.MapPath("InputString.txt")).ReadToEnd()

tmpStr = tmpStr.Replace(""" />", "") ' this just replaces the bit at the end of the image URL

Dim rgx As New Regex("<img\salt=\"".*src=\""")
Dim imageXml As String = rgx.Replace(tmpStr, "")

TextBox1.Text = imageXml

and here is the output taken from TextBox1:

<root>
<Fullsize>/Games/images/pic_01.jpg</Fullsize>
<Fullsize>/Games/images/pic_02.jpg</Fullsize>
<Fullsize>/Games/images/pic_03.jpg</Fullsize>
<Fullsize>/Games/images/pic_04.jpg</Fullsize>
<Fullsize>/Games/images/pic_05.jpg</Fullsize>
<Fullsize>/Games/images/pic_06.jpg</Fullsize>
<Fullsize>/Games/images/pic_07.jpg</Fullsize>
<Fullsize>/Games/images/pic_08.jpg</Fullsize>
</root>