Kan någon kolla om min RegExp kod ser ok ut?

ASP

6 svar · 205 visningar · startad av KoTTeN

Medlem sedan sep. 20011 722 inlägg
Trådstart#1

Hallå! Jag har testat lite med regexp. Denna kod har jag fått fram:

Function Regular(strText)
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true

objRegExp.Pattern = "\[list\]((.|\s)*?)\[/list\]"
strText = objRegExp.Replace(strText,"<UL>$1</UL>") 

objRegExp.Pattern = "(\[\*\])"
strText = objRegExp.Replace(strText,"<LI>") 

objRegExp.Pattern = "\[url=(.*?)\]((.&#0124;\s)*?)\[\/url\]"
strText = objRegExp.Replace(strText,"<B><A HREF=""$1"">$2</A></B>") 

objRegExp.Pattern = "\[b\]((.&#0124;\s)*?)\[/b\]"
strText = objRegExp.Replace(strText,"<B>$1</B>")
objRegExp.Pattern = "\[i\]((.&#0124;\s)*?)\[/i\]"
strText = objRegExp.Replace(strText,"<I>$1</I>")

objRegExp.Pattern = "\[table\]((.&#0124;\s)*?)\[/table\]"
strText = objRegExp.Replace(strText,"<TABLE WIDTH=""100%"" BORDER=""2"" CELLSPACING=""0"" CELLPADDING=""0"">$1</TABLE>") 
objRegExp.Pattern = "\[tr\]((.&#0124;\s)*?)\[/tr\]"
strText = objRegExp.Replace(strText,"<TR>$1</TR>") 
objRegExp.Pattern = "\[td(.*?)\]((.&#0124;\s)*?)\[/td\]"
strText = objRegExp.Replace(strText,"<TD$1><FONT CLASS=""s"">$2</FONT></TD>") 

objRegExp.Pattern = "\[citat\]((.&#0124;\s)*?)\[/citat\]"
strText = objRegExp.Replace(strText,"<BLOCKQUOTE><I>$1</I></BLOCKQUOTE>") 

objRegExp.Pattern = "\[img\]((.&#0124;\s)*?)\[/img\]"
strText = objRegExp.Replace(strText,"<IMG SRC=""$1"">") 

strText = Replace(strText, vbcrlf, "<BR>" & vbcrlf) 

Regular=strText
End Function

Detta är det första jag gör i regexp, men konstigt nog kom det inga felmedelanden. Brukar alltid komma upp sjuttielva fel annars.
Men något skumt fel måste de ju finnas. Kan någon vänlig person som inte har något särskilt för sig kolla igenom om det ser ok ut? Vad som kan göras bättre och vad som ä så innehelvetes fel? Vore toppen i så fal!

Och så en sak till, om jag vill ha denna funktion på ett tio tal sidor, ska jag då lägga in den i en Include fil som jag inkluderar högst upp på varje som jag vill ha den i?

Medlem sedan dec. 19998 577 inlägg
#2

Är det något som inte funkar?

Och så en sak till, om jag vill ha denna funktion på ett tio tal sidor, ska jag då lägga in den i en Include fil som jag inkluderar högst upp på varje som jag vill ha den i?

Absolut... du skall inte göra på något annat sätt (om du inte vill hålla på med komponenter eller scriptlets). ;)

Medlem sedan sep. 20011 722 inlägg
#3

Nej allt funkar! Jag bara har en sån där äcklig känsla av att det är någonting som kan göras bättre...

Medlem sedan juni 20019 024 inlägg
#4

Nu jag inte så jättehaj på RegExp, men borde man inte kunna göra en funktion av det (om man dimmar objRegExp & strText globalt):

Sub RegExpressa(strPattern, strString)
 &nbsp; &nbsp; objRegExp.Pattern = strPattern
 &nbsp; &nbsp; strText = objRegExp.Replace(strText, strString)
End Sub
Medlem sedan sep. 20011 722 inlägg
#5

Nä jag är inte heller jättehaj på RegExp, så kan du förklara mer? :)

Medlem sedan dec. 19998 577 inlägg
#6

Det handlar inte om regexp utan om funktioner... :)

Du skapar en funktion för att exekvera ditt pattern så slipper du skriva den koden varje gång, exempel:

dim objRegExp 
Function Regular(strText)
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true

[b]strText = RegExpressa("\[list\]((.&#0124;\s)*?)\[/list\]", "<UL>$1</UL>")[/b]

strText = Replace(strText, vbcrlf, "<BR>" & vbcrlf) 

Regular=strText
End Function

Sub RegExpressa(strPattern, strString)
    objRegExp.Pattern = strPattern
    strText = objRegExp.Replace(strText, strString)
End Sub
Medlem sedan sep. 20011 722 inlägg
#7

aha ok! De testar vi!

269 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)