[JAVA] Pattern 클래스

gyeol·2024년 7월 16일
0

자바

목록 보기
10/12
post-thumbnail

Pattern 클래스

정규 표현식이 컴파일된 클래스이다. 정규 표현식에 대상 문자열을 검증하거나 활용하기 위해 사용되는 클래스를 말한다.
이 클래스에서는 정규 표현식을 컴파일해 인스턴스를 스스로 만들어야 한다. 이후 만든 패턴을 가지고 Matcher 객체를 생성할 수 있다. 생성된 Matcher 객체는 패턴과 문자열을 비교할 수 있게 해준다.

Matcher

Pattern 클래스를 받아 대상 문자열과 패턴이 일치하는 부분을 찾거나 전체 일치 여부 등을 판별하기 위해 사용된다.

주요 메서드

  • Pattern pattern() : matcher가 해석한 패턴 반환
  • Matcher usePattern(Pattern newPattern) : matcher가 사용할 Pattern 변경
  • Matcher reset(CharSequence input) : matcher가 분석할 문자열을 변경
  • int start() : 매칭하는 문자열의 시작 인덱스를 반환
  • int start(String name) : 매칭 문자열 중 해당 name을 지정한 그룹의 시작 인덱스를 반환
  • int end() : 일치하는 문자열의 마지막 문자열 이후 인덱스를 반환
  • int end(int group) : 매칭 문자열 중 group번째 그룹의 마지막 문자열 이후(+1) 인덱스를 반환
  • int end(String name) : 매칭 문자열 중 해당 name을 지정한 그룹의 마지막 문자열 이후(+1) 인덱스를 반환
  • String group() : 매치와 일치하는 문자열을 반환
  • String group(int group) : 매칭되는 문자열 중 group번째 그룹의 문자열 반환
  • String group(String name) : 매칭되는 문자열 중 해당 name을 지정한 그룹의 문자열 반환
  • int groupCount() : 패턴 내에 그룹핑한 개수를 반환(패턴에 있는 괄호 개수
  • boolean matches() : 패턴에 전체 문자열이 일치한 경우 true를 반환
  • boolean find() : 패턴이 일치하는 다음 문자열을 찾음. 다음 문자열이 있다면 true
  • boolean find(int start) : start 인덱스 이후부터 패턴에 일치하는 문자열을 찾는다
  • String replaceAll(String replacement) : 패턴과 일치하는 모든 문자열을 지정된 replacement로 변경

matches()

컴파일과 비교를 한번에 해주는 메서드이다.
contains()와 비슷한 메서드이지만 조금의 차이점이 존재한다. contains() 메서드는 인자로 전달받은 특정 문자의 포함 여부를 확인하는 메서드이지만 matches()는 정규 표현식으로 인자를 받아 동일한 패턴의 문자열인지 확인하는 메서드이다.

Pattern p = Pattern.compile("a.d");
Matcher m = p.matcher("aad");
boolean b = m.matches(); // true

//위와 같은 코드를 한줄로 요약할 수 있음
boolean b = Pattern.matches("a.d", "aad"); // true

정규 표현식

특정한 규칙을 가진 문자열의 집합을 표현하는데 쓰이는 언어이다.

  • ^x : 문자열의 시작을 표현, x 문자로 시작됨을 의미
  • x$ : 문자열의 종료를 표현, x 문자로 종료됨을 의미
  • .x : 임의의 한 문자의 자릿수를 표현하며 문자열이 x로 끝난다는것을 의미
  • x+ : 반복을 표현하며 x 문자가 한번 이상 반복됨을 의미
  • x? : 존재여부 표현, x 문자가 존재할수도 있고 없을수도 있음
  • x* : 반복여부 표현, x 문자가 0번 이상 반복됨을 의미
  • x{n} : 반복을 표현하며 x 문자가 n번 반복됨을 의미
  • x{n,} : 반복을 표현하며 x 문자가 n번 이상 반복됨을 의미
  • x{n, m} : 반복을 표현하며 x 문자가 n번 이상 m번 이하로 반복됨을 의미
    참고 : https://hamait.tistory.com/342
profile
코딩 공부 기록중 '◡'

0개의 댓글