정규표현식은 문자열 패턴을 나타내는 표현 방식이다.
많은 경우 정규 표현식을 대체할 수 있는 자바 내장 라이브러리들이 있지만 경우에 따라 더욱 편리할 때가 있다.
-자주 표현되는 정규표현식
정규표현식 | 내용 |
. | 개행 문자를 제외한 아무 문자 |
[abc] | a, b, c 중 아무것이나 |
[^abc] | a, b, c를 제외하고 |
[a-g] | a, g 사이의 문자들 [0-9], [a-z], [A-Z] => 모든 숫자, 소문자, 대문자 |
a* | a 0개 이상 |
a+ | a 1개 이상 |
a? | a 0개 또는 1개 |
a{5} | a 5개 |
a{2,} | a 2개 이상 |
a{2,4} | a 2개 이상 4개 이하 |
ab|cd | ab 또는 cd |
^a | 문자열의 처음 문자가 a |
a$ | 문자열의 마지막 문자가 a |
\ | 사전 정의된 문자를 표현한느 이스케이프 시퀀스 |
-String 클래스의 정규표현식 관련 메서드
메서드 | 반환형 | 내용 |
replaceAll(String regex, String replacement) | String | 전달받은 정규표현식에 매칭되는 패턴을 모두 replacement로 치환 |
matches | boolean | 문자열이 전달받은 정규표현식에 매칭되는지 여부를 반환 |
split(String regex) | String[] | 전달받은 정규표현식에 매칭되는 패턴을 기준으로 원본 문자열을 잘라서 반환 |
-관련 문제(신규 아이디 추천)
-풀이
class Solution {
public String solution(String new_id) {
// 1단계
new_id = new_id.toLowerCase();
// 2단계
new_id = new_id.replaceAll("[^a-z0-9\\-_.]", "");
// 3단계
new_id = new_id.replaceAll("\\.{2,}", ".");
// 4단계
new_id = new_id.replaceAll("^\\.|\\.$", "");
// 5단계
if (new_id.isEmpty()) {
new_id = "a";
}
// 6단계
if (new_id.length() >= 16) {
new_id = new_id.substring(0, 15);
new_id = new_id.replaceAll("\\.$", "");
}
// 7단계
while (new_id.length() < 3) {
new_id += new_id.charAt(new_id.length() - 1);
}
return new_id;
}
}
'개발 공부 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 삼각 달팽이 (1) | 2024.01.03 |
---|---|
[프로그래머스] 가장 가까운 글자 (0) | 2023.12.05 |
프로그래머스 - 교점에 별 만들기 (4) | 2023.11.02 |