728x90
- 정규표현식(Regular Expression): 특정 문자열의 규칙을 가지는 문자열의 집합을 표현하는 데 사용되는 언어
- 정규표현식 패턴
- 문자 클래스
- \\w: 문자만 허용
- \\W: 문자가 아닌 경우에만 허용
- \\d: 숫자만 허용
- \\D: 숫자가 아닌 경우에만 허용
- \\s: 공백 문자, 탭만 허용
- \\S: 공백 문자, 탭이 아닌 경우에만 허용
- 어셜선(Assertions): 행이나 단어의 시작, 끝을 나타내는 경계와 어떤식으로든 매치가 가능한 것을 나타내는 패턴
- ^: 문장의 시작
- $: 문장의 끝
- 수량자(Quantifiers): 일치 시킬 문자 또는 표현식의 수
- ?: 없거나 있거나
- *: 없거나 있거나 많거나
- +: 하나 또는 많이
- {n}: n개가 있는
- {min,}: 최소
- {min, max}: 최소, 그리고 최대
- 그룹과 범위
- (): 그룹
- []: 문자셋, 괄호 안의 어떤 문자든
- [^]: 부정 문자셋, 괄호 안의 어떤 문자가 아닐 때
- (?:): 찾지만 기억하지는 않음
- 문자 클래스
- 정규식을 위한 정규 메서드
- Pattern Class: 정규식을 기반으로 문자열에 대한 검증 수행
- import java.util.regex.Pattern
- Pattern.matches(String regex, CharSequence input): 대상이 되는 문자열과 정규식이 일치하면 true 아니면 false
- Pattern.pattern(): 컴파일된 정규표현식을 String 형태로 반환
- Pattern.compile(String regex): 컴파일된 정규표현식 반환
- Pattern.asPredicate(): 문자열을 일치시키는 데 사용할 수 있는 술어 작성
- Pattern.split(CharSequence input): 문자열을 주어진 인자값 CharSequence 패턴에 따라 분리
- Matcher Class: 문자열 내에 일치하는 문자열을 확인하기 위해 정규식을 이용하여 찾고 존재여부를 반환. Patten 클래스 객체를 기준으로 match를 수행.
- import java.util.regex.Matcher
- matches(): 대상 문자열과 패턴이 일치하면 true 반환
- find(): 대상 문자열과 패턴이 일치하면 true로 반환하고 그 위치로 이동
- find(int start): start 위치 이후부터 매칭검색 수행
- start(): 매칭되는 문자열의 시작위치 반환
- start(int group): 지정된 그룹이 매칭되는 시작위치 반환
- end(): 매칭되는 문자열 끝 다음 문자위치 반환
- end(int group): 지정된 그룹이 매칭되는 끝 다음 문자위치 반환
- group(): 매칭된 부분을 반환
- group(int group): 매칭된 부분 중 group번 그룹핑 매칭부분 반환
- groupCount(): 패턴 내 그룹핑한 전체 갯수 반환
- Pattern Class: 정규식을 기반으로 문자열에 대한 검증 수행
- 예시
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatcherTest {
public static void main(String []args) {
String str = ("abcd1234@naver.com"); // 테스트할 이메일
String regex = "^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$"; // 이메일 정규식
Pattern p = Pattern.compile(regex); // Pattern 객체 생성(인자에 정규식)
Matcher m = p.matcher(str); // Matcher 객체 생성(인자에 검사할 문자열)
if(m.find()) { //
System.out.println("이메일의 형식이 맞습니다.");
System.out.println("start(): " + m.start() + ", end(): " + m.end());
System.out.println("group(): " + m.group());
}
else {
System.out.println("이메일의 형식이 아닙니다.");
}
}
}
[출처] 자바 정규식 활용하기 - Matcher 클래스와 Pattern 클래스|작성자 예비개발자
'프로그래밍 언어 > Java' 카테고리의 다른 글
열거 타입(Enum) (0) | 2023.10.20 |
---|---|
포함관계와 추상화 구현 순서 (0) | 2023.10.16 |
추상 클래스와 인터페이스 비교 (0) | 2023.10.16 |
자주 쓰는 함수 (0) | 2023.10.10 |
자료형 String (0) | 2023.09.21 |