정규표현식은 문자열 패턴을 나타내는 표현 방식이다.
많은 경우 정규 표현식을 대체할 수 있는 자바 내장 라이브러리들이 있지만 경우에 따라 더욱 편리할 때가 있다.
-자주 표현되는 정규표현식
| 정규표현식 | 내용 |
| . | 개행 문자를 제외한 아무 문자 |
| [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 |