[C#]Regex | escape sequenz fehler

07/11/2010 13:40 scenebase#1
Folgendes Pattern :
Code:
(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})
(Soll ip addresse auslesen von [Only registered and activated users can see links. Click Here To Register...]).

So, nun füge ich das Pattern in mein Code ein und er gibt mir direkt ein paar Fehler aus.

Quote:
Fehler 1 Nicht erkannte Escapesequenz. C:\Users\patrick\Documents\Visual Studio 2010\Projectsxx\Lx\xx.cs 55 37 xx
Aber wenn ich es durch verschiedene rexeg tester laufen lasse, sagt er mir es geht und gibt mir auch die ip richtig aus.

Ich hab jetzt : [Only registered and activated users can see links. Click Here To Register...] & Rexeg-Lab aus dem Mycsharp forum genommen.

[Only registered and activated users can see links. Click Here To Register...]

Beide sagen mir, die Pattern ist richtig.

Wo liegt der "Fehler"? -.-
07/11/2010 13:52 x]vIrus[x#2
in c#,c,c++ und vielen sprachen mehr wird das \ zeichen in strings als escape zeichen verwendet, sprich, wenn man z.b. nen spezielles zeichen schreiben will wie z.b. tabulator, oder enter, dann schreibt man für tabulator \t udn für enter \n bzw \r\n

wenn man also das \ als solches haben möchte, muss man dieses selbst auch noch escapen -> "\\" gibtquasi 1 \ folglich muss dein string so aussehn:
"(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3}) "

c# bietet allerdings auch die möglichkeit das escape zeichen nicht zu nutzen indem du ein @ vor den string packst, dann kann dein regex so aussehn: @"(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})" allerdings kannst du da dann nicht komfortabel n enter zeichen reinbauen,..
07/11/2010 13:59 scenebase#3
Hey, danke dir :)
Ich glaube ich sollte mir noch mal mein Buch durch lesen und dann auf msdn was zu escape zeichen.