반응형
^ | 문자열 시작 |
$ | 문자열 종료 |
. | 임의의 한 문자(단 \은 넣을 수 없음) |
* | 앞 문자가 없을 수도 무한정 많을 수도 있음 |
+ | 앞 문자가 하나 이상 |
? | 앞 문자가 없거나 하나 있음 |
[ ] | 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타냅니다. [] 내에서 ^ 가 선행하여 존재하면 not을 나타낸다. |
{ } | 횟수 또는 범위를 나타냅니다. |
( ) | 소괄호 안의 문자를 하나의 문자로 인식 |
| | 패턴 안에서 or 연산을 수행할 때 사용 |
\ | 정규 표현식 역슬래시(\)는 확장문자 (역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미) |
\b | 단어의 경계 |
\B | 단어가 아닌것에 대한 경계 |
\A | 입력의 시작 부분 |
\G | 이전 매치의 끝 |
\Z | 입력의 끝이지만 종결자가 있는 경우 |
\z | 입력의 끝 |
\s | 공백 문자 |
\S | 공백 문자가 아닌 나머지 문자 |
\w | 알파벳이나 숫자 |
\W | 알파벳이나 숫자를 제외한 문자 |
\d | 숫자 [0-9]와 동일 |
\D | 숫자를 제외한 모든 문자 |
(?i) | 앞 부분에 (?!)라는 옵션을 넣어주게 되면 대소문자는 구분하지 않습니다. |
응용
[^-_.a-z0-9] | 숫자, 알파벳 소문자, -, _, . 을 제외(^)한 케이스 |
[.]{2,} | . 이 여러번 반복되는 케이스 |
[.]|[.] | 처음과 끝에 . 있는 케이스 |
class Solution {
public String solution(String new_id) {
String answer = "";
String temp = new_id.toLowerCase();
System.out.println(temp); // ...!@bat#*-.--.y.abcdefghijklm
temp = temp.replaceAll("[^-_.a-z0-9]", "");
System.out.println(temp); // ...bat-.--.y.abcdefghijklm
temp = temp.replaceAll("[.]{2,}", ".");
System.out.println(temp); // .bat-.--.y.abcdefghijklm
temp = temp.replaceAll("^[.]|[.]$", "");
System.out.println(temp); // bat-.--.y.abcdefghijklm
if (temp.equals(""))
temp += "a";
if (temp.length() >= 16) {
temp = temp.substring(0, 15);
temp = temp.replaceAll("^[.]|[.]$", "");
}
System.out.println(temp);
if (temp.length() <= 2)
while (temp.length() < 3)
temp += temp.charAt(temp.length() - 1);
System.out.println(temp);
answer = temp;
return answer;
}
}
https://programmers.co.kr/learn/courses/30/lessons/72410
반응형
'∙Algorithm' 카테고리의 다른 글
[Algorithm] 백준/11657 :: 타임머신 (0) | 2019.04.30 |
---|---|
[Algorithm] 백준/1026 :: 보물 (0) | 2019.04.30 |
[Algorithm] 백준/2504 :: 괄호의 값 (0) | 2019.04.29 |
[Algorithm] 백준/2493 :: 탑 (0) | 2019.04.27 |