2012-02-01 2 views
1

여기에 문제가 조금 있습니다. 나는 문자열에서 정규 표현식의 여러 발행 수와 일치하도록 노력하고있어,하지만 난 모든 회 발생하지 않습니다자바 정규식 - 여러 번 일치하는 것

샘플 :

 s = new RegExp(';' + y[p][0] + '_' + y[p][1] + '_' + y[p][2] + '_([0-9]*);', 'g'); 
     e = null; 
     e = s.exec(grArr); 
     while (e != null) { 
      alert(e[0]+'-'+e[1]+'-'+e[2]); //debugging output 
      r = r + e[0]; //adding results to output var 
      e = s.exec(grArr); 
     } 

Sample variables: 
//to be searched: 
var grArr=';0_0_709711498101583267971121121179999105110111_11994876;0_0_709711498101583267971121121179999105110111_11994877;0_0_709711498101583267971121121179999105110111_11994878;0_0_709711498101583267971121121179999105110111_11994879;0_0_709711498101583268117110107101108103114252110_11994872;0_0_709711498101583268117110107101108103114252110_11994873;0_0_709711498101583268117110107101108103114252110_11994874;0_0_709711498101583268117110107101108103114252110_11994875;0_0_7097114981015832839910411997114122_11994868;0_0_7097114981015832839910411997114122_11994869;0_0_7097114981015832839910411997114122_11994870;0_0_7097114981015832839910411997114122_11994871;0_1_71114246115115101583276_11994870;0_1_71114246115115101583276_11994874;0_1_71114246115115101583276_11994878;0_1_71114246115115101583277_11994869;0_1_71114246115115101583277_11994873;0_1_71114246115115101583277_11994877;0_1_71114246115115101583283_11994868;0_1_71114246115115101583283_11994872;0_1_71114246115115101583283_11994876;0_1_7111424611511510158328876_11994871;0_1_7111424611511510158328876_11994875;0_1_7111424611511510158328876_11994879;' 
//search Pattern: 
y[0][0]='0'; 
y[0][1]='1'; 
y[0][2]='71114246115115101583283'; 

이 2 회 발생을 초래 -하지 (3) 예상대로를 있다.

답변

1

문제는 세미콜론을 두 번 사용하는 것입니다. 한 번 끝에서 정규식을 시작할 때입니다.

예에서 세 개의 "일치"가 서로 직접 이어 지므로 이전 세미콜론이 이전 일치에서 이미 사용 되었기 때문에 두 번째 발생이 발견되지 않습니다.

해결책 : 정규 표현식에서 ';' 대신 단어 경계 ('\\b')를 사용하십시오.

+0

완벽! 감사!! –