개발자 도전기
[JAVA] 정규표현식(regex) 본문
정규표현식이란?
문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일종의 형식 언어이다.
문자열이 정해져 있는 형식으로 구성되어 있는지 검증할 때 사용한다.
정규표현식 작성 방법
표현 및 기호 | 설명 | 표현 및 기호 | 설명 |
^ | 정규 표현식 시작 | * | 없음 또는 한 개 이상 |
$ | 정규 표현식 끝 | + | 한 개 이상 |
[] | 한 개의 문자 | {n} | 정확히 n개 |
\d | 한 개의 숫자, [0-9]와 동일 | {n,} | n개 이상 |
\s | 공백 | {n,m} | n부터 m개까지 |
\w | 한 개의 알파벳 또는 한 개의 숫자, [a-zA-Z0-9]와 동일 | a|b | a 또는 b |
\. | . | [abc] | a, b, c 중 하나의 문자 |
. | 모든 문자 중 한 개의 문자 | [^abc] | a,b,c 의외의 하나의 문자 |
? | 없음 또는 한 개 | () | 그룹핑 |
[a-z] : 소문자 알파벳 a부터 z까지 중 하나의 문자
[a-zA-Z] : 소문자 알파벳 a부터 z, 대문자 알파벳 A부터 Z 중 하나의 문자
그 밖에도 많은 정규표현식 작성 방법이 있다.
실제 작성 시에는 이스케이프 문자로 역슬래시 하나를 문자열로 포함시키기 때문에 역슬래시를 하나씩 더 붙여준다.
\d는 \\d로, \\는 \\\\로 작성해야 한다.
System.out.println("\\".matches("\\\\")); // true
System.out.println("a".matches(".")); // true
System.out.println(".".matches("\\.")); // true
Pattern 클래스로 검증
Pattern 클래스의 matches() 메소드로 정규 표현식 문자열을 검증할 수 있다.
검증 후의 결과는 boolean 타입으로 리턴된다.
boolean result = Pattern.matches("String regex", "String str");
String regExp = "(02|010)-\\d{3,4}-d{\\d{4}";
String data = "010-123-4567";
boolean result = Pattern.matches(regExp, data);
if (result) {
System.out.println("정규식과 일치합니다");
} else {
System.out.println("정규식과 일치하지 않습니다");
}
// 출력 결과 : "정규식과 일치합니다"
String 클래스의 정규식 문법
String 클래스의 몇몇 메소드에서도 정규식 사용이 가능하다.
String 정규식 메소드 | 설명 |
boolean matches(String regex) | 문자열에 인자로 주어진 정규식이 매칭되는지 확인 |
String replacAll(String regex, String replacement) | 문자열 내에 있는 정규식과 매치되는 모든 문자열을 replacement 문자열로 바꾼 문자열을 반환 |
String[] split(String regex) | 인자로 주어지는 정규식과 매치되는 문자열을 구분자로 분할 |
String str = "aybzc";
boolean result = str.matches("\\w+");
System.out.println("result = " + result); // true
String str2 = str.replaceAll("[y-z]", "x");
System.out.println("str2 = " + str2); // str2 = axbxc
String[] arr = str2.split("x");
System.out.println(Arrays.toString(arr)); // [a, b, c]
정규표현식 사이트
regex101: build, test, and debug regex
Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust.
regex101.com
정규표현식을 해석해주고 테스트도 할 수 있는 사이트이다
'개발공부 > JAVA' 카테고리의 다른 글
[JAVA] List 컬렉션 - ArrayList, Vector, LinkedList (0) | 2024.03.18 |
---|---|
[JAVA] 컬렉션 프레임워크 (0) | 2024.03.18 |
[JAVA] 람다식(Lambda Expressions) (0) | 2024.03.13 |
[JAVA] 익명 객체 (0) | 2024.03.12 |
[JAVA] 중첩 선언(중첩 클래스, 중첩 인터페이스) (0) | 2024.03.12 |