반응형
정규표현식은 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어다.
주로 전화번호, 주민등록번호, 이메일 등 형식이 정해져있는 데이터에 대해 유효성 검사를 진행할 때 사용된다.
정규표현식 사용 방법
자바에서 정규표현식을 사용할 때는 java.util.regex 패키지 안에 있는 Pattern 클래스와 Matcher 클래스를 주로 사용한다.
Pattern 클래스
java.util.regex.Pattern 클래스의 matches() 메서드를 활용해서 해당 문자열이 정규표현식에 적합한 상태인지 검증할 수 있다. 매개 변수는 (정규표현식, 문자열)로 2개이고, 리턴값은 true, false를 반환한다.
import java.io.IOException; import java.util.regex.Pattern; public class Main { public static void main(String[] args) throws IOException { String pattern = "^[0-9]*$"; String value = "123456789"; // 해당 문자열이 숫자로만 이루어졌는지 검증 boolean regex = Pattern.matches(pattern, value); System.out.println(regex); } }
Pattern 클래스 주요 메서드 | |
메서드 | 설명 |
complie(String regex) | 주어진 정규표현식으로부터 패턴을 만듦 |
matches | 대상 문자열이 패턴과 일치한 지 true/false |
asPredicate() | 문자열을 일치시키는데 사용할 수 있는 술어를 작성 |
pattern() | 컴파일된 정규표현식을 String형태로 반환 |
split(CharSequence input) | 문자열을 주어진 인자값 CharSequence 패턴에 따라 분리 |
Pattern 플래그 값 사용 (상수) | |
플래그 값 | 설명 |
Pattern.CANON_EQ | None 표준화된 매칭 모드를 활성화 |
Pattern.CASE_INSENSITIVE | 대소문자를 구분하지 않음 |
Pattern.COMMENTS | 공백과 #으로 시작하는 주석을 무시함 |
Pattern.MULTILINE | 수식 ^는 라인의 시작과 수식 $는 라인의 끝과 match |
Pattern.DOTALL | 수식 .과 모든 문자와 match 되고, \n도 match에 포함 |
Pattern.UNICODE_CASE |
유니코드 기준으로 대소문자 구분없이 match |
Pattern.UNIX_LINES |
수식 .과 ^ $의 match 시에 한 라인의 끝을 의미하는 \n만 인식함 |
Matcher 클래스
대상 문자열의 패턴을 해석하고 주어진 패턴과 일치하는지 판별할 때 주로 사용된다.
import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) throws IOException { String value = "abCdefG"; Matcher pattern = Pattern.compile("^[a-zA-Z]*$").matcher(value); System.out.println(pattern.find()); } }
Matcher 클래스 주요 메서드 | |
메서드 | 설명 |
matcher(CharSequence input) | 대상 문자열이 패턴과 일치한 지 true/false |
find() | 대상 문자열과 패턴이 일치할 경우 true를 반환하고 그 위치로 이동 |
find(int start) | start 위치부터 매칭 검색을 수행 |
start() | 매칭되는 문자열 시작 위치를 반환 |
start(int group) | 지정된 그룹이 매칭되는 시작 위치를 반환 |
end() | 매칭되는 문자열 끝 다음 위치를 반환 |
end(int group) | 지정된 그룹이 매칭되는 끝 다음 위치를 반환 |
group() | 매칭된 부분을 반환 |
group(int group) | 매칭된 부분 중에 group번 그룹핑 매칭 부분 반환 |
groupCount() | 패턴 내 그룹핑한 전체 갯수를 반환 |
반응형
'개발 & 데이터베이스 > JAVA' 카테고리의 다른 글
MyBatis 동적 쿼리 if문 문법 정리 (0) | 2024.05.28 |
---|---|
자료구조 데크 deque (0) | 2024.02.21 |
IntelliJ IDE 다운로드 방법 및 프로젝트 생성하기 (0) | 2023.07.24 |
자바 디컴파일러 JD-GUI 사용 방법 (.jar, .class 파일) (0) | 2023.07.17 |
사용 중인 포트 종료하는 방법 - Identify and stop the process that's listening on port 8080 or configure this application to listen on another port. (0) | 2023.07.12 |