🙈

⃝ 동글동글 ⃝

🪐ᐩ˖ 🍎

Java/기초

[Java 기초] 정규식(Regular Expression) regex 패키지

JONG_UK 2023. 5. 20. 00:43
728x90
반응형
SMALL

정규식(Regular Expression) regex 패키지

java.util.regex 패키지

 

정규식이란 텍스트 데이터 중에서 원하는 조건(패턴, Pattern)과 일치하는 문자열을 찾아내기 위해 사용한다.

미리 정의된 기호와 문자를 이용하여 작성한 문자열에서 뽑아낼 수 있다.

 

정규식을 이용하여 많은 양의 텍스트 파일 중에서 원하는 데이터를 손쉽게 뽑아낼 수 있고, 입력된 데이터가 형식에 맞는지 체크할 수도 있다.

예를 들어 html 문서에서 전화번호나 이메일 주소만을 따로 추출하거나, 입력한 비밀번호가 숫자와 영문자의 조합으로 되어있는지 확인할 수도 있다. 

 

정규식에 사용되는 기호와 작성방법에 대해서는 정말 광범위하기 때문에 자주 쓰이는 정규식의 작성 예를 보고 응용할 수 있을 정도까지만 학습하고 넘어가는 것이 좋다.

 

import java.util.regex.*;	// Pattern과 Matcher가 속한 패키지

class RegularEx1 {
	public static void main(String[] args) 
	{
		String[] data = {"bat", "baby", "bonus",
				    "cA","ca", "co", "c.", "c0", "car","combat","count",
				    "date", "disc"};		
		Pattern p = Pattern.compile("c[a-z]*");	// c로 시작하는 소문자영단어

		for(int i=0; i < data.length; i++) {
			Matcher m = p.matcher(data[i]);
			if(m.matches())
				System.out.print(data[i] + ",");
		}
	}
}

실행 과정 순서

1. 정규식을 매개변수로 Pattern 클래스의 static 메서드인 Pattern compile(String regex)을 호출하여 Pattern 인스턴스를 얻는다.

Pattern p = Pattern.compile("c[a-z]*");

2. 정규식으로 비교할 대상을 매개변수로 Pattern 클래스의 Matcher matcher(CharSequence input)를 호출하여 Matcher 인스턴스를 얻는다.

Matcher m = p.matcher(data[i]);

3. Matcher 인스턴스에 boolean matchers()를 호출해서 정규식에 부합하는지 확인한다.

if(m.matches())

 

 

자주 사용하는 정규표현식

import java.util.regex.*;

public class RegularEx2 {
    public static void main(String[] args) {
        String[] data = {"bat", "baby", "bonus", "c", "cA",
                "ca", "co", "c.", "c0", "c#",
                "car", "combat", "count", "date", "disc"
        };
        String[] pattern = {".*", "c[a-z]*", "c[a-z]", "c[a-zA-Z]",
                "c[a-zA-Z0-9]", "c.", "c.*", "c\\.", "c\\w",
                "c\\d", "c.*t", "[b|c].*", ".*a.*", ".*a.+",
                "[b|c].{2}"
        };

        for (int x = 0; x < pattern.length; x++) {
            Pattern p = Pattern.compile(pattern[x]);
            System.out.print("Pattern : " + pattern[x] + "  결과: ");
            for (int i = 0; i < data.length; i++) {
                Matcher m = p.matcher(data[i]);
                if (m.matches())
                    System.out.print(data[i] + ",");
            }
            System.out.println();
        }
    }
}

728x90
반응형
LIST