Java

Java Regular Expressions (정규 표현식)

blackbearwow 2024. 9. 20. 11:25

1. Pattern.compile()로 패턴 객체 생성

import java.util.regex.Pattern;

Pattern pattern1 = Pattern.compile("[a-z]+");
Pattern pattern2 = Pattern.compile("[a-z]+", Pattern.CASE_INSENSITIVE);
Pattern pattern3 = Pattern.compile("(?i)[a-z]+");

Pattern.compile(String regex) 또는 Pattern.compile(String regex, int flags)로 패턴 객체를 생성한다.

플래그는 compile메소드의 두번째 인자에 속성값을 전달하는 방법이 있고, 문자열에 기호로 전달하는 방법이 있다. 기호로 전달할 때는 문자열 맨 앞에 추가한다.

flag값으로는 다음 field를 줄 수 있다.

field(속성) 기호 설명
CASE_INSENSITIVE (?i) 대소문자를 구분하지 않는다
UNICODE_CASE (?u) CASE_INSENSITIVE 플래그와 같이 사용한다면, 영어 알파벳이 아닌 언어도 대소문자를 구분하지 않는다

2. Pattern 객체에서 matcher()메소드로 Matcher 객체 생성

import java.util.regex.Pattern;
import java.util.regex.Matcher;

Pattern pattern3 = Pattern.compile("(?i)[a-z]+");
Matcher matcher1 = pattern3.matcher("Today is cloudy");

3.  Matcher 객체에서 메소드로 원하는 작업 실행

matcher 클래스의 대표 메소드

반환 타입 메소드 설명
boolean find() 패턴에 맞는 다음 문자열이 있는지 없는지
String group() 매치된 문자열 반환
int start() 매치의 시작 인덱스. 시작 문자의 인덱스다
int end() 매치의 마지막 인덱스. 마지막 문자+1의 인덱스다

 

예제 코드

import java.util.regex.Pattern;
import java.util.regex.Matcher;
class Main {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("[a-z]+", Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher("Today is cloudy");
        while(matcher.find()) {
            System.out.println(matcher.group());
            System.out.println(matcher.start()+ " " +matcher.end());
        }
    }
}

참고: https://www.w3schools.com/java/java_regex.asp

https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/regex/Pattern.html

https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/regex/Matcher.html

https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%A0%95%EA%B7%9C%EC%8B%9DRegular-Expression-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%A0%95%EB%A6%AC

-

'Java' 카테고리의 다른 글

Java 파일 조작 (File Handling)  (0) 2024.09.23
Java 예외 처리 (Exception, try catch)  (1) 2024.09.21
Java 콘솔 입출력 (console output & input)  (0) 2024.09.19
Java 자료구조 클래스 (Data Structure Classes)  (1) 2024.09.14
Java Class  (1) 2024.09.07