Java/java

java :) java에서 정규표현식 사용하기, Pattern 클래스

euncheol kim 2022. 5. 10. 00:46

 

 

 

goal

java.util.regex의 Pattern 클래스의 static method인 matches를 알아본다.

 

 

참고자료

java 1.8 documentation, https://docs.oracle.com/javase/8/docs/api/index.html

기타 사용법 : Pattern 어렵지 않게 사용하기, https://gngsn.tistory.com/53, pageseo

 

 

 금일 페어프로그래밍을 하며 알게된 클래스

페어프로그래밍의 페어님께서 java도 정규 표현식을 나타낼 수 있다는 것을 알려주셨고,

우연히 Patten클래스를 알게 되어 작성한다. 언젠가는 써먹을 일이 있을거라 생각한다.

 

하 api 문서를 보고 작성해보려고 시도했으나 영어가 너무 부족하여 패스 공부해야겠다.

 

* Pattern 클래스


image

우선 정규표현식을 나타낼 때 쓰는 클래스로 보이며 구성자체는 아래와 같다.

public final class Pattern implements Serializable

final이 붙은 class와 method는 상속과 오라이딩이 되지 않는다.

따라서, Pattern에 설계되어진 메소드 기능들은 그 자체로 써야한다. (불러와서 써야한다.)

Serializable인터페이스도 어디선가 많이 본 애인데 아직은 궁금하지 않다.

 

 

1. Pattern 클래스의 static method인 matches()


 

matches()메소드는 static 메소드로써, 인스턴스 생성없이 사용이 가능하다.

매개변수로 String regex, CharSequence input을 받게되는데

String regex는 정규표현식이 들어가게 되고 CharSequence input에는 String 타입이 들어가 String의 하나 하나의 문자가 들어가게 된다. 정규표현식과 각 문자를 비교해 정규표현식에 일치하면 True, 일치하지 않는다면 False를 리턴한다.

 

 

[1] 사용예시

  • PatternMatches.java
import java.util.regex.Pattern;

public class PatternMatches {
    public static void main(String[] args){
        String[] arr = new String[]{"12345", "31985djf"};

        String regex = "[0-9]*$"; // 0에서 9까지 숫자가 모두 포함되면
        for(String elem : arr) {
            if(Pattern.matches(regex, elem)) {
                System.out.println("elem의 각 값은 " + elem + "이며 모두 숫자입니다.");
            } else {
                System.out.println("elem의 각 값은" + elem + "이며 숫자가 아닌 값이 있거나 모두 숫자가 아닙니다.");
            }
        }


    }
}
  • PatternMatches.java [결과값]

image