① .*\/ 구문이 /로 끝나는 모든 문자를 검사한 후, 더 이상 검사할 문자열이 없기 때문에
② 이후 (.*) 구문은 0개 이상 검사할 수 있는 수량자 *에 의해 임의 문자 .을 0개 검사 후 종료되며
③ 캡처 그룹 ()은 검사 결과인 임의 문자 0개를 Group1에 저장한다. (null 문자가 저장됐다고 생각하면 됨)
rex도 네임드 캡처 그룹을 사용한다는 차이를 빼면 같은 정규표현식을 사용하기 때문에 결과는 똑같음. 즉 정규표현식 검사가 성공했을 때는 똑같이 동작한다.
결과가 달라진다. 정규표현식 .*\.(.*) 구문은 순수 문자 .을 필수 검사하기 때문에 .이 없는 문자열은 검사에 실패하며, 캡처 그룹이 저정할 수 있는 문자열도 존재하지 않는다.
이는 네임드 캡처 그룹을 사용한 rex도 마찬가지.
하지만 필드 추출 결과는 다르다. eval은 소스 필드값을 그대로 가져오고, rex는 아예 가져오지 않는다.
rex는 정규표현식 검사가 성공하든 실패하든 최종 검사 결과만을 가져오는데, eval replace 함수는 성공했을 때만 검사 결과를 가져오고, 실패하면 소스 필드를 반환한다.
관련 글
댓글 없음:
댓글 쓰기