|
From: Guoqi Zheng on 17 Mar 2008 10:36 Dear Sir, I need to use regex to replace some string. Below is what I use. output = "sample data <href=""xlink:GG44-33"">, part two <href=""xlink:GG55-123"">" Dim regEx Set regEx = New RegExp regEx.Pattern = "href=\""(xlink:.*?)\""" output = regEx.Replace(output,"href="&chr(34) & GetDatabaseLink("$1")&chr(34)) Function GetDatabaseLink(Byval input) '' query database based on "input" value and return value on database. End Function the value inside <href> tag needs to be replaced by real value from database. Function GetDatabaseLink get the value from match string and send it to database for query. What the database receive right now is the value of "$1", instead of "xlink:GG44-33" and "xlink:GG55-123" in this case. What did I do wrong? Regards, Guoqi Zheng
From: Anthony Jones on 18 Mar 2008 04:42 "Guoqi Zheng" <no(a)sorry.com> wrote in message news:235D4433-6744-44F8-A41B-450D89D45D32(a)microsoft.com... > Dear Sir, I need to use regex to replace some string. > > Below is what I use. > > output = "sample data <href=""xlink:GG44-33"">, part two <href=""xlink:GG55-123"">" > Dim regEx > Set regEx = New RegExp > regEx.Pattern = "href=\""(xlink:.*?)\""" > output = regEx.Replace(output,"href="&chr(34) & > GetDatabaseLink("$1")&chr(34)) > > Function GetDatabaseLink(Byval input) > '' query database based on "input" value and return value on database. > End Function > > the value inside <href> tag needs to be replaced by real value from > database. Function GetDatabaseLink get the value from match string and send > it to database for query. What the database receive right now is the value > of "$1", instead of "xlink:GG44-33" and "xlink:GG55-123" in this case. > > What did I do wrong? RegEx will replace any $1 it finds in the string passed to it. The expression:- "href="&chr(34) & GetDatabaseLink("$1")&chr(34) is evaluated first then its result passed into the the Replace method. Therefore GetDataBaseLink("$1") executes as is with no replacement of $1. First thing I would do is lose the extraneous href= etc from around the pattern. Use:- regEx.Pattern = """xlink:[^""]*" regEx.Global = True output = regEx.Replace(output, GetRef("ReplaceXLink")) Function ReplaceXLink(rsXLink, vlOffset, rsSource) ReplaceXLink = """" & GetDatabaseLink(Mid(rsXLink, 2, Len(rsXink) -2)) & """" End Function This will globally replace all xlinks in the string with the appropriate value looked up from the DB. -- Anthony Jones - MVP ASP/ASP.NET
|
Pages: 1 Prev: printing special characters to file Next: GetRows() and hyperlinks |