Regular Expressions används för att hitta vissa mönster i en textmassa och ta ut de delar som matchar detta mönster. T.ex. så kan du använda det i en när du skapar en gästbok eller forum för att skapa dina egna taggar vilket ger dig kontroll över vilken html som är tillåten. Du har säkert många gånger sett när du skrivit i ett forum att när du vill ha fet text så används [b]Text som skall bli fet[/b]. Denna text kan man sedan med hjälp av Regular Expressions hitta och ersätta med html-motsvarigheten så att den skriver ut <b>Text som skall bli fet</b> istället.
Jag ska börja med att visa hur du gör en sök och ersätt enligt ovan. Börja med att dra ut en literal-kontroll som du sätter ID=litResult på. Sedan så går vi över till kod-filen där vi börjar med att importera namespace:n som vi behöver
using System.Text.RegularExpressions;
och i Page_Load skriver vi in nedanstående kod.
// Här deklarerar vi vårat pattern, samt lägger vill så att vi inte bryr oss om
// användaren använder stora eller små bokstäver.
Regex rxPattern = new Regex(@"\[b\](.*)?\[/b\]", RegexOptions.IgnoreCase);
// Här säger vi att vi vill använda vårat Regex-mönster och göra en replace.
// Texten som vi ska söka igenom är den första strängen och den andra strängen är vad vi ska
// ersätta med. $1 betyder att den ska ta den första träffen vårat mönster får och ersätta med.
litResult.Text = rxPattern.Replace("[b]Text som skall bli fet[/b]", "<b>$1</b>");
Om du nu kontrollerar källkoden så kommer du att se att <b>Text som skall bli fet</b> har skrivits ut, detta tack vare vårat mönster som hittade texten vi var ute efter och ersatte den med våran valda text.
Nästa exempel ska visa hur du tar ut valda delar ur en text och skriver ut dessa. Exemplet jag ska visa här tar antalet inloggade på http://www.ASPSidan.se.
Liksom föregående exempel så drar vi ut en literal-kontroll som vi ger ID:t litResult samt importerar namespacet, sedan i Page_Load skriver vi följande kodsnutt.
// För att göra det lite roligare så kommer vi att använda en metod i klassen WebClient för
// att hämta hem den text vi ska använda för våran utsökning från ASPSidan.
// Metoden vi ska använda heter DownloadString
WebClient wcClient = new WebClient();
// Det första vi gör är att deklarerar vårat mönster som vi kommer att använda för
// att få fram antalet inloggade
Regex rxPattern = new Regex(@"inloggade:\s(\d*)?");
// Vi sparar sedan vårat resultat i ett Match-objekt
Match mCount = rxPattern.Match(wcClient.DownloadString("http://www.aspsidan.se"));
// Vi skriver sedan ut vårat resultat
litResult.Text = mCount.Groups[1].Value;
wcClient.Dispose();
Gör du utsökningar som får mer än ett resultat så använder du MatchCollection istället samt metoden Matches. Ett exempel visas nedan
MatchCollection mcMatches = rxPattern.Matches("text här som mönstret skall testas emot");
Du har här fått en liten kort introduktion till vad du kan använda Regular Expressions och de är ett mycket kraftfullt verktyg när du behöver hitta valda delar ur en textmassa. Då jag själv inte är nån stjärna på att knåpa ihop dessa Regular Expressions så har jag valt att inte försöka förklara hur man gör detta, men du kan läsa mer om det samt hitta många färdiga RegExp:s på
http://regexlib.com/ samt http://www.regular-expressions.info/
Om tiden tillåter ska jag försöka vara lite mer aktiv på sidan än jag varit på sistone.