https://programmers.co.kr/learn/courses/30/lessons/72410
코딩테스트 연습 - 신규 아이디 추천
카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로
programmers.co.kr
위 문제를 통해 자바 정규식을 정리해보겠습니다.
new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다.
위 문제의 2단계입니다.
정규식을 통해 문자열을 바꿀 수 있는 replaceAll()을 이용하여 보겠습니다.
new_id = new_id.replaceAll("[^a-z0-9-_.]", "");
[^a-z0-9-_.]
위 정규식은 a-z까지 문자, 0-9까지 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 문자 집합을 나타냅니다.
그래서 replaceAll을 쓰면 정규식에 해당되는 문자를 빈 문자로 전환합니다.
new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.
new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.
new_id = new_id.replaceAll("[.]+", ".");
new_id = new_id.replaceAll("^[.]|[.]$", "");
3, 4단계의 코드입니다.
[.]+ : 이 정규식은 .가 1번이상 반복되는 문자열을 의미합니다.
^[.]|[.]$ : 이 정규식은 .가 첫 글자이거나 마지막 글자인 문자를 의미합니다.
더 자세히 알고 싶으시면 이 블로그를 참고하여 주시면 될 거 같습니다.
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
코테에서 잘 쓰이는 내장함수 (0) | 2021.09.02 |
---|---|
빠른 입출력 (0) | 2021.01.30 |