2010-02-16 2 views
11

정규 표현식을 사용하여 등호 (=)로 시작하고 그 사이에 여러 문자가있는 세미콜론 (;)으로 끝나는 모든 하위 문자열을 찾으려고합니다. 이 같은 것이어야합니다. =*;= 및 a;가있는 정규 표현식입니다.

어떤 이유로 인해 동일하지 않습니다. 정규식 통지 내 등호를 만들 것입니다 어떤 종류의 이스케이프 문자가 있습니까?

이 질문에 베어링이있는 경우 자바로 작업하고 있습니다.

답변

17

귀하가 찾고있는 것일 수 있습니다. 별표를 적용 할 문자 세트 또는 와일드 카드 문자를 지정해야합니다. 지금 그룹이 괄호를 사용

"=(.*?);" 

:

"=([^;]*);" 

은 또한 꺼려 한정 기호를 사용할 수 있습니다. 첫 번째 그룹은 전체 경기이고, group[1]은 괄호 안에있는 그룹입니다.

과 같이 보일 수 있습니다 코드 :. = 같은

Regex r = new Regex("=([^;]*);"); 
Match m = r.Match(yourData); 
while (m.Success) { 
    string match = m.Groups[1]; 
    // match should be the text between the '=' and the ';'. 
} 
+0

이 내가 찾던 날 잡았어하지만 그 구분 기호 사이의 것만을 찾을 수 있습니까? 즉, =와; 사이에있는 것을 얻고 싶습니다. 표현에 실제로 포함시키지 않아도됩니다. 감사합니다. – chama

+1

찾을 값 주위에 괄호를 추가하면 Matcher의 group() 메서드 중 하나를 사용하여 괄호 안에있는 비트 만 검색 할 수 있습니다. – mkb

+0

정확히 어떻게 group() 메서드를 사용하면이 작업을 수행 할 수 있습니까? – chama

7

이 "다른 문자의 수에 따라 ="

=*; 

당신이 원하는 경우 "0을 포함한 = 기호의 수"를 찾습니다 당신은 그러나

=.*; 

, 그 뜻합니다 탐욕스러운 일치 - 게으른 일치를 원할 경우 (다음 세미콜론을 찾으면 하나의 그룹이 중지되도록) 다음을 원할 수 있습니다.

=.*?; 
1

입력하신 정규식은 ;, ===;, ..., ================;과 일치합니다. =.*; (또는 욕심이 심하지 않으면 =.*?;)은 어떨까요?

1

뭔가 *;