cyprysMedlem sedan dec. 20003 563 inlägg Var inte den brightaste på regexp i ASP 3 men lärde mig lite i slutet av den tiden. Hur funkar detta i .NET?
Jag får det att funka helt ok vad gäller validexpressionvalidator men när det gäller att söka igenom en sträng för publicering?
Någon som kan ge ett enkelt exempel på hur det ser ut med alla klasser som behövs m.m? T.ex Byta ut mot <b></b>
PaceMedlem sedan juni 20019 024 inlägg Jag är ingen hejare på RegExp-mönster, men jag vet tillräckligt för att göra enklare saker. Nedan är en liten del taget ur en "forumkod"-metod.
Public Shared Function Parse(ByVal strText As String)
' [ b ]...[ /b ]
Dim objRegExp As RegEx = New Regex("\[b\]((.|\s)*?)\[/b\]", RegexOptions.IgnoreCase Or RegexOptions.Compiled)
strText = objRegExp.Replace(strText, "<b>$1</b>")
Return strText
End Function
Pace skrev:
Public Shared Function Parse(ByVal strText As String)
' [ b ]...[ /b ]
Dim objRegExp As RegEx = New Regex("\[b\]((.|\s)*?)\[/b\]", RegexOptions.IgnoreCase Or [red][3]RegexOptions.Compiled[/3][/red])
strText = objRegExp.Replace(strText, "<b>$1</b>")
Return strText
End Function
Ovidkommande kanske, men tänk på att för att dra nytta av RegexOptions.Compiled ska du spara det regexp:et som en medlemsvariabel (helst statisk) som du återanvänder i metoden. Annars kommer du ändå kompilera om det vid varje anrop.
cyprysMedlem sedan dec. 20003 563 inlägg uh? HÄnger inte med där developer...
Såhär. Anledningen för att använda "RegexOptions.Compiled" är av prestandaskäl, för att slippa att yttrycket kompileras om varje anrop. Men som du använder objRegExp, skapas ju en ny instans vid varje anrop, och då görs en omkompilering varje gång. Långsamt.
Gör istället såhär:
Private Shared objRegExp As Regex = New Regex("\[b\]((.|\s)*?)\[/b\]", RegexOptions.IgnoreCase Or RegexOptions.Compiled)
Public Shared Function Parse(ByVal strText As String)
strText = objRegExp.Replace(strText, "<b>$1</b>")
Return strText
End Function
dvs lägg ditt RegEx utanför metoden och därmed kommer du återanvända samma RegEx varje gång man anropar Parse().