본문 바로가기
프로그래밍 언어/Java

정규표현식

by 진진리 2023. 10. 17.
728x90
  • 정규표현식(Regular Expression): 특정 문자열의 규칙을 가지는 문자열의 집합을 표현하는 데 사용되는 언어
  • 정규표현식 패턴
    1. 문자 클래스
      • \\w: 문자만 허용
      • \\W: 문자가 아닌 경우에만 허용
      • \\d: 숫자만 허용
      • \\D: 숫자가 아닌 경우에만 허용
      • \\s: 공백 문자, 탭만 허용
      • \\S: 공백 문자, 탭이 아닌 경우에만 허용
    2. 어셜선(Assertions): 행이나 단어의 시작, 끝을 나타내는 경계와 어떤식으로든 매치가 가능한 것을 나타내는 패턴
      • ^: 문장의 시작
      • $: 문장의 끝
    3. 수량자(Quantifiers): 일치 시킬 문자 또는 표현식의 수
      • ?: 없거나 있거나
      • *: 없거나 있거나 많거나
      • +: 하나 또는 많이
      • {n}: n개가 있는
      • {min,}: 최소
      • {min, max}: 최소, 그리고 최대
    4. 그룹과 범위
      • (): 그룹
      • []: 문자셋, 괄호 안의 어떤 문자든
      • [^]: 부정 문자셋, 괄호 안의 어떤 문자가 아닐 때
      • (?:): 찾지만 기억하지는 않음
  • 정규식을 위한 정규 메서드
    1. 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 패턴에 따라 분리
    2. 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(): 패턴 내 그룹핑한 전체 갯수 반환
  • 예시
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