내 정규식은 지금까지입니다 :정규식은 두 번째 캡처 그룹에서 제외 할
^(UCX_|UBX_|USP_)([A-Za-z0-9]\w+)(_\d+)?$
내가 문자열을 테스트 할 때 :
UCX_1maxi_holiday2_blah_343
제대로 테스트를 진정한 그러나 마지막 캡처 그룹 것 두 번째 그룹과도 일치하기 때문에 절대 도달하지 못합니다. 즉 마지막으로 구분 된 섹션이 모두 숫자 인 경우 두 번째가 아닌 세 번째 캡처 그룹에서 해당 섹션을 원합니다. 다른 사람들은 제 2 그룹에서 그것을 원합니다.
나는 lookaheads와 -behinds를 생각해 보았고 나는 이것들을 위해 작동한다고 생각하지 않지만 놀랄 수 있습니다.
나는 문자열의 끝을 검사하기 위해 별도의 테스트를 수행 한 다음 필요로하는 문자열을 분리하지만 지적 호기심을 가질 수 있습니다. 이
사람이 몇 가지 정규식 JiuJitsu을 가지고 모든 숫자를인지 끝을 건드리지을 중지 두 번째 캡처 그룹을 수정하는 방법이 있는지
궁금하네요?
그래도 작동합니다. nongreedy에 대한 나의 초기 이해에는 약간의 교육이 필요합니다. 그래서 욕심이 없다는 것은 다음 패턴이 그것을 안다면 먹는 것을 계속할 것입니까? – jollarvia
일반적으로 그렇습니다. 탐욕스러운 표현은 대개 더 빠릅니다. 욕심이없는 성냥은 앞이나 뒤를 돌아봐야하기 때문입니다 (패턴의 다음 부분을 위해 떠날 필요가있는 것을 '알기'위해). 많은 경우에 속도 차이는 결코 중요하지 않습니다. – cco