프로그래머스 - L0 공백으로구분하기2 // 정규표현식
class Solution {
public String[] solution(String my_string) {
String[] answer = my_string.trim().split("\\s+");
return answer;
}
}
trim() : 문자열의 양 끝에 있는 공백(스페이스, 탭, 개행 등)을 제거한 새로운 문자열 반환
split() : 문자열을 지정된 구분자로 나누어 각 부분을 포함하는 문자열 배열 반환
그리고 이건, 정규표현식의 다른 사용 풀이.
class Solution {
public String[] solution(String my_string) {
return my_string.trim().split("[ ]+");
}
}
자바의 정규표현식 (정규식)
정규표현식 : 특정 문자열의 규칙을 가지는 문자열의 집합을 표현하는 데 사용되는 언어
문자 클래스(Character classes)
문자만 허용 \\w ↔ \\W 문자만 제외
숫자만 허용 \\d ↔ \\D 숫자만 제외
공백만 허용 \\s ↔ \\S 공백만 제외
어설션(Assertions)
^문자열 로 시작 ↔ 끝은 다음의 문자열$
수량자(Quantifiers)
? : 0 or 1
* : 0 or n
+ : 1 or n
{n} : n
{min,} : minimum ~
{,max} : ~ maximum
{min, max} : minimum ~ maximum
그룹과 범위(Group and Range)
() : 그룹, 그룹 안의 패턴 전체를 하나의 요소로 취급
[] : 문자셋, 괄호 안의 어떤 문자든 특정 문자 클래스의 범위 지정
[^] : 부정문자셋, 괄호 안의 문자 제외 특정 문자 클래스의 범위 지정
(?:) : 비캡쳐 그룹, 매칭된 부분을 추출하여 따로 그룹화하지 않으면서 그룹 사용
→ 몇가지 메타문자와 함께 사용
( . : 모든 문자, - : 부터 까지, | : or 등...)
비캡쳐 그룹이 헷갈리는데, 일단 여기까지만. 그룹에 대해서는 좀 더 알아봐야 할 것 같다.
참고 : Contributor9의 티스토리 / dEpayse의 미디엄