Perl 매칭 관련 질문

show567의 이미지

안녕하세요 새롭게 Perl공부를 시작한 사회 초년생입니다.
펄을이용하여 정규식을 짤때 난관에 부딛혀 이렇게 질문을 드립니다. 답변 부탁드려요

$a = {{{{{}}}}}}}}};~~~;;,nn

위와 같은 문장이 있을때 마지막 "}"값을 찾아 치환하는 방법은 뭐가 있을까요?
"}"의 갯수는 알수 없고 랜덤입니다. 그리고 마지막 "}" 중간에 올 수도 있고 처음 혹은 마지막 에 올 수 도 있습니다.
답변 부탁드립니다 ;;

raymundo의 이미지

뭔가 제가 실수한 부분이 있을지 모르겠습니다만 간단한 테스트로는 잘 되는 것 같네요.

# 마지막 } 를 > 로 치환
 
 
# 마지막 }   =>   자신의 뒤쪽에는 더 이상 }가 나타나지 않는 }
# 부정 전방탐색
$a =~ s/}(?!.*})/>/;
 
# 마지막 }  =>   자신의 뒤에는 문자가 없거나 }를 제외한 문자만 있는 }
# 긍정 전방탐색
$a =~ s/}(?=[^}]*$)/>/;
 
# 전방탐색을 안 쓴다면
# 마지막 } 는 > 로 바꾸고, 그 뒤에 있는 것들은 그대로 다시 치환
$a =~ s/}([^}]*$)/>$1/;

좋은 하루 되세요!

show567의 이미지

완벽 하네요 감사합니다.~~

박정부 드림.