문제는 욕심쟁이 수량 한정자 .*
을 사용하여 가능한 모든 것을 먹어 치우려고 시도하는 것보다 발생합니다.
^(.*?)([0-9/+^-]+)=([0-9]+)
이 전체 경기를 찾는 동안 적은 가능한 일치 .*?
의 원인이됩니다 :
대신 게으른 한정 기호를 사용하여 정량은 예에서 4
에서 중지됩니다.
또한 -
은 문자 클래스 안에있는 특수 문자로, 처음에 입력해야하거나 끝 부분 ([...-]
) 또는 [+-^]
이 범위가되도록 이스케이프해야합니다. 다른 정규식처럼
우리의 정규식 (.*)([0-9/+-^]+)
을 무슨 일
는 일치하는 항목을 반환하고자합니다. 그것을하기 위해서, 그것은 "길이가 다른 것, 적어도 [0-9/+-^]
범위 내의 캐릭터가 뒤따른 것"을 찾아야합니다. 3u->4+5
정규식에 도포 만이 규칙에 따라
는 제 뷰 매치에 수 : 제 (하나만 자리에서 제 1 그룹
3u->4+
, 5
는 제 2 그룹에 대한을 필요 매치) 제 01
- 제 1 그룹
3u->4
, +5
제
3u->
의 제 1 그룹,
그래서 어느 것이 일치해야합니까? 선택하는 어느 하나를 알고하기 위해
의 (휴리스틱 및 단순화 된) 규칙은 다음과 같습니다 *
정량이 욕심 경우
- 는 항상 그것을 가장 할 수
- 경우 일치하려고합니다 게으름 (따라서
*?
을 사용하는 경우) 정규 표현식이 여전히 글로벌 일치를 반환하는 동안 가능한 한 일치 할 것입니다.
당신은 일반적인 기본 규칙과 미묘한 깊이에 더 설명되고있는 주제 here 또는 here에 자세한 내용을보실 수 있습니다.
http://meta.stackexchange.com/questions/10647/how-do-i-write-a-good-title –
태그 묶음을 반복하지 말고 적절한 제목을 입력하십시오. –