2009-12-10 7 views
2

나는 Browsergame에서 좌표를 일치시키고 싶다.C# - Regexp - ArgumentException

 try 
     { 
      Regex r = new Regex("Mond ([1-9]) \x5B([1-9]):([1-9][0-9]{0,2}):([1-9][0-9]{0,2})\x5D"); 
      Match m = r.Match("Mond 1 [1:1:1]"); 
     } 
     catch (ArgumentException ex) 
     { 
      Console.WriteLine(ex); 
     } 

에러이다 : 내 정규식은

System.ArgumentException "([1-9]) [([1-9]) 사교계 ([1-9 ] [0-9] {0,2}) : ([1-9] [0-9] {0,2}) "와일드 분석가 - Zie viele) -Zeichen. bei System.Text.RegularExpressions.RegexParser.ScanRegex() bei System.Text.RegularExpressions.RegexParser.Parse (문자열 re, RegexOptions op) bei System.Text.RegularExpressions.Regex..ctor (문자열 패턴, RegexOptions 옵션, C : \ Users \ Heavyfan \ Documents \ Visual Studio 2008 \ Projects \ WindowsFormsApplication7 \ WindowsFormsApplication7 \ Form2.cs 파일에서 bei) des typed "System.ArgumentException"is not in System.dll aufgetreten.

내 정규식의 문제점은 무엇인가요?

죄송합니다. 해상도는 Thx입니다.

답변

3

오류 메시지를 이해하지 못했지만 이스케이프 문제처럼 보입니다. 백 슬래시가 이스케이프 처리되지 않았습니다. 다음 중 하나에 정규식을 변경 :

//verbatim 
Regex r = new Regex(@"Mond ([1-9]) \x5B([1-9]):([1-9][0-9]{0,2}):([1-9][0-9]{0,2})\x5D"); 

//or escaped 
Regex r = new Regex("Mond ([1-9]) \\x5B([1-9]):([1-9][0-9]{0,2}):([1-9][0-9]{0,2})\\x5D"); 
+0

해결해 주셔서 감사합니다. –

0

\ x5B 및 \ x5D는 각각 [및]로 변환되어 잘못된 RegEx입니다.

직접 탈출 해보십시오. \[ and \].

+1

아니요 해상도가 아닙니다. ([1-9]) : [[1-9] [0-9] {0,2}) : ([1-9]) : Regex r = new Regex ("Mond ([1-9]) \ ] [0-9] {0,2}) \\] "); 오류는 다음과 같습니다. unknown escapesequence –

0

당신은 \ 문자를 두 배로해야합니다.

try 
    { 
     Regex r = new Regex("Mond ([1-9]) \\x5B([1-9]):([1-9][0-9]{0,2}):([1-9][0-9]{0,2})\\x5D"); 
     Match m = r.Match("Mond 1 [1:1:1]"); 
    } 
    catch (ArgumentException ex) 
    { 
     Console.WriteLine(ex); 
    } 

이것은

 Regex r = new Regex("Mond ([1-9]) \\[([1-9]):([1-9][0-9]{0,2}):([1-9][0-9]{0,2})\\]"); 
0

\x5B[되는 동등한 것 및 \x5D]이다. 이러한 문자가 이미 RegEx에서 의미가 있음을 알아야하므로 \ 앞에 앞에 \을 넣어 이스케이프해야합니다. 나는 축 어적 문자열을 사용하므로 \를 사용하지 않아도됩니다.

new Regex(@"Mond ([1-9]) \[([1-9]):([1-9][0-9]{0,2}):([1-9][0-9]{0,2})\]")