Android 개발/Java, Java8

Matcher 클래스와 Pattern Class로 정규 표현식을 활용해보자

Developer88 2017. 3. 22. 00:01
반응형

지난 글에서 정규 표현식(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을, 텍스트 뷰에 정상적으로 출력할 수 있습니다.



728x90