지난 글에서 정규 표현식(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을, 텍스트 뷰에 정상적으로 출력할 수 있습니다.
'Android 개발 > Java, Java8' 카테고리의 다른 글
Java에서 랜덤 함수를 이용해 난수 얻기 (0) | 2019.09.13 |
---|---|
Java, Android 에서 날짜 표현할 때 Calendar, Date 그리고 SimpleDateFormat (1) | 2018.12.11 |
Enum값에 대해서 알아보겠습니다 (0) | 2018.04.10 |
정규 표현식 (Regular Expression) 과 응용 사례를 정리해 보자 (1) | 2017.09.07 |
Math 클래스 의 반올림, 올림, 버림 등 자주 사용하는 메소드 정리 #Java (0) | 2017.04.09 |
Java 배열 및 ArrayList 를 Comparable과 Comparator 를 이용해 정렬하기 (0) | 2017.03.19 |
Bit 논리 연산과 시프트 연산 의 정리 (0) | 2017.03.16 |
Java Wrapper 클래스 를 정리해 보자 (0) | 2017.03.07 |
Java Map인 HashMap, TreeMap, LinkedHashMap 에 대해서 정리해 보자. (0) | 2017.02.12 |
Java의 3항 연산자는 알아야, 소스코드도 보인다 (0) | 2017.01.21 |
댓글