2013-09-29 2 views
-1

정규식을 사용하는 데 문제가 있습니다.정규식이 예상과 일치하지 않습니다.

나는 다음과 같은 코드를 가지고 :

string d = "moveUp(),;moveDown();"; 
string[] s = Regex.Split(d, ","); 
foreach (string line in s) 
{ 
    string line1 = line.Replace("\n", null); 
    line1 = line1.Replace("\r", null); 
    string pattern = @"^moveUp();$"; 
    bool a1 = Regex.IsMatch(line1, pattern); 
    if (!a1) 
    { 
     warning.Text = "error"; 
     return; 
    } 
} 

왜 여기 a1false의 가치인가?

+0

평범한 구형 문자열 비교는 정규식보다 훨씬 간단합니다 :'! line1.Equals ("moveUp();")'분명히 와일드 카드, 그룹, 캡쳐가 필요하지 않습니다. 왜 * * * 당신은 정규식을 사용하고 있습니까? – stakx

답변

3

()은 정규 표현식에서 특별한 의미를 갖습니다 : 캡처 그룹.

당신은 그것을 탈출해야합니다 : \(\)()와 문자 그대로 일치해야합니다. moveUp()

,;moveDown();;으로 교환해야합니다 moveUp(),;moveDown();을 분할하는 수 있기 때문에

+0

정말 고마워요! 당신은 생명의 은인입니다! –

1

string s="moveUp();,moveDown();"; 
1

string s="moveUp(),;moveDown();"; 

에서 첫 번째 라인을 변경하려고합니다.

관련 문제