Pattern 클래스
정규 표현식이 컴파일된 클래스. 정규 표현식에 대상 문자열을 검증하거나, 활용하기 위해 사용되는 클래스
메소드 종류 | 의미 |
static Pattern compile(String regex) | 주어진 정규식을 갖는 패턴을 생성 |
String pattern() | 컴파일된 정규 표현식을 반환 |
Matcher matcher(CharSequence input) | 패턴에 매칭할 문자열을 입력해 Matcher를 생성 |
static boolean matches(String regex, CharSequence input) | 정규식과 문자열이 일치하는지 확인 |
String[] split(CharSequence input) String[] split(CharSequence input, int limit) |
패턴이 일치하는 항목을 중심으로 input을 분할 • limit - 1의 횟수만큼 패턴 일치를 시켜 문자열을 자름 (문자열이 limit개 생성) • 만약 0이하라면 최대한 많이 적용 |
Matcher 클래스
Pattern클래스를 받아 대상 문자열과 패턴이 일치하는 부분을 찾거나 전체 일치 여부 등을 판별하기 위해 사용되는 클래스
메소드 종류 | 의미 |
Pattern pattern() | matcher가 해석한 패턴을 반환 |
Matcher usePattern(Pattern newPattern) | matcher가 사용할 Pattern을 변경 |
Matcher reset(CharSequence input) | matcher가 분석할 문자열을 변경 |
int start() | 매칭하는 문자열의 시작 인덱스를 반환 |
int start(int group) | 매칭 문자열 중 group번째 문자열의 시작 인덱스를 반환 • 0은 그룹의 전체 패턴을 의미 (start(0) = start()) |
int start(String name) | 매칭 문자열 중 해당 name을 지정한 그룹의 시작 인덱스를 반환 |
int end() | 일치하는 문자열의 마지막 문자열 이후 인덱스를 반환 |
int end(int group) | 매칭 문자열 중 group번째 그룹의 마지막 문자열 이후(+1) 인덱스를 반환 • 0은 그룹의 전체 패턴을 의미 (end(0) = end()) |
int end(String name) | 매칭 문자열 중 해당 name을 지정한 그룹의 마지막 문자열 이후(+1) 인덱스를 반환 |
String group() | 매치와 일치하는 문자열을 반환 |
String group(int group) | 매칭되는 문자열 중 group번째 그룹의 문자열 반환 • 0은 그룹의 전체 패턴을 의미 (group(0) = group()) |
String group(String name) | 매칭되는 문자열 중 해당 name을 지정한 그룹의 문자열 반환 |
int groupCount() | 패턴 내에 그룹핑한 개수(패턴에 있는 괄호 개수)를 반환 |
boolean matches() | 패턴에 전체 문자열이 일치한 경우 true를 반환 |
boolean find() | 패턴이 일치하는 다음 문자열을 탐색 • 다음 문자열이 있다면 true |
boolean find(int start) | start 인덱스 이후부터 패턴에 일치하는 문자열을 탐색 |
String replaceAll(String replacement) | 패턴과 일치하는 모든 문자열을 지정된 replacement로 변경 |
예시
- 영문자만 포함하고 있는지 검사하여 출력
String regex = "^[a-zA-Z]$";
String input = "My major is computer science."
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
System.out.println(matcher.matches()); // false (∵공백 포함)
- 패턴과 일치하는 문자열을 반복해서 추출
String regex = "^([0-9]+)([SDT])([*#]?)$";
String input = "1D2S#10S*";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while(matcher.find()){
System.out.println(matcher.group());
}
// 1D
// 2S#
// 10S*
'TIL > Java' 카테고리의 다른 글
[Java] 디자인 패턴 - 싱글톤(Singleton) 패턴 (0) | 2022.06.01 |
---|---|
[Java] BufferedWriter vs StringBuilder (0) | 2022.05.10 |
[Java] 정규표현식 문법 (0) | 2022.05.07 |
[Java] ArrayList를 배열로 변환하는 방법 (0) | 2022.05.04 |
[Java] Comparable vs Comparator (0) | 2022.04.28 |