간단한 정규표현식 테스트.
캡쳐그룹에 저장된 문자열은 aaa와 ccc. 그런데 똑같은 정규표현식을 사용한 replace와 rex 명령어의 처리 결과가 다르다. 왜 이럴까?
replace 정규표현식은 전체 문자열 검사 필수
|ccc를 검사하는 정규표현식 ([^|]+).*의 캡쳐그룹은 |가 아닌 모든 문자를 검사하므로 |는 검사 범위에 포함되지 않는다. 결과적으로 검사 실패. 그리고 eval replace는 검사에 실패한 문자열을 그대로 반환한다.
검사 결과인 |ccc는 검사에 실패한 |와 성공한 ccc가 합쳐진 결과였던 것. |를 최종 검사 결과에서 제외하려면 전체 검사 범위에 해당 문자를 포함시켜야 한다.
참고로 rex는 replace처럼 전체 문자열이 아닌, 추출을 원하는 범위만 검사해도 된다.
관련 글
댓글 없음:
댓글 쓰기