Matcher 클래스와 Pattern Class로 정규 표현식을 활용해보자
지난 글에서 정규 표현식(Regular Expression)에 대해서 정리해 보았었는데요.
오늘은 Matcher클래스와 Pattern 클래스를 이용해서,
정규 표현식을 활용해보는 것에 대해서 정리해 보도록 하겠습니다.
참고로, 정규표현식에 관해서는 아래글을 참조해주세요.
>>> 정규 표현식 (Regular Expression) 과 응용 사례를 정리해 보자 <<<
1. Matcher클래스와 Pattern 클래스
Matcher클래스는 char들을 match하는 것과 관련된 메소드들을 제공해주는데요.
그런데, 이 Matcher클래스는 Pattern클래스의 객체를 받아서, 그 기준으로 match를 해보고 메소드들을 사용할 수 있도록 합니다.
따라서 제일 먼저 필요한 것은 match를 할 기준이 되는,
Pattern 객체라고 할 수 있겠는데요.
Pattern객체를 만들기 위해서, 아래와 같이, Pattern.compile()의 인자에 정규표현식을 넣어주면 됩니다.
이제 Matcher Class의 객체를 생성하고, 이 클래스가 제공해주는 메소드들 활용해야 하는데요.
위에서 만든 Pattern Class 의 객체에, matcher()메소드를 사용하고,
인자로 비교할 텍스트를 넣어주면 됩니다.
아래와 같이 하면, Pattern클래스의 객체와 Matcher클래스의 객체를 다 생성한 것이구요.
이제, Matcher 클래스가 제공해주는 메소드들을 활용할 일만 남았네요.
예제를 만들어 보기 전에,
Matcher클래스의 메소드들에 대해서 알아보고 가겠습니다.
2. Matcher클래스의 메소드들
2-1. find()
주어진 텍스트에서 Pattern 에 일치하는 텍스트들이 발견되면 true를 반환해줌.
특이한 것은, 반복문을 계속 호출하여 주어진 텍스트의 두번째, 혹은 세번째로 패턴과 일치하는
부분도 찾을 수 있다는 점입니다.
2-2. start()
일치한 텍스트의 시작 index값을 넘겨 줍니다.
2-3. end()
start와는 반대로 일치한 텍스트의 마지막 index 값을 넘겨줍니다.
2-4. group()
주어진 텍스트에서 주어진 패턴과 일치하는 텍스트를 반환해줍니다.
2-5. match()
주어진 텍스트 전체와 Pattern이 일치하는 경우 true를 반환해 줍니다.
find, star, end 만으로도 많은 작업들을 할 수 있는데요.
아래에서 실제로 코드를 작성하면서 정리해 보겠습니다.
3. Matcher클래스로 정규표현식 응용
위에서 정리한 메소드인 find, start, end를 활용하여서,
"10시가 다 됬네"에서 시간부분의 숫자만 정규식으로 추출해서,
"10:00" 로 출력해보도록 하겠습니다.
find메소드를 사용하여서, 패턴이 발견되는지 확인하구요,
start와 end메소드를 활용해서 텍스트의 index값들을 알아낸 후에,
잘라서 아래와 같이 활용하였습니다.
아래와 같이 10:00을, 텍스트 뷰에 정상적으로 출력할 수 있습니다.