어떤 문자열이 특정 패턴을 갖는지 판단하거나 데이터를 추출할 때 정규표현식을 사용한다.
정규표현식에는 정말 많은 특수문자들이 많기 때문에 다 외우기는 힘들고, 그때그때 찾아서 하거나 자꾸 쓰면서 익숙해지는게 좋다.
예제를 보면서 알아보도록 하자.
이메일형식인지 아닌지를 알아보기 위한 기능을 만들어보려면
▲ Pattern 클래스에 있는 complie메소드에 우리가 원하는 표현식을 인자로 넣어서 complie시킨다.
이후 pattern()메소드를 사용해보면 우리가 인자로 준 표현식이 잘 들어간 것을 알 수 있다.
▲ 입력받은 이메일 주소를 pattern클래스의 matcher()메소드를 통해서 String형을 Matcher형으로 형변환을 한다.
▲ matcher클래스의 start와 end메소드를 사용해서 매칭되는 문자열의 위치를 알 수 있다.
주의할 점은 end는 문자열 끝의 다음 문자위치를 반환한다는 거다.
이번에는 문자열 데이터에서 우리가 원하는대로 데이터를 분리시켜보자.
▲ 정규표현식을 만드는 방법은 여러 방법이 있으므로 자신만의 방법대로 하면 될 것이고, 나는 위 방법으로 문자열 데이터를 나누었다. 소괄호를 이용하면 데이터를 덩어리로 자를 수 있다. 위 코드에서는 총 4개의 덩어리로 잘랐다.
▲ groupCount()메소드를 이용해서 우리가 만든 패턴내 그룹핑한 전체 갯수를 반환한다.
패턴이 일치하지 않으면 전체 패턴을 하나로 묶어서 그룹수 1로 반환한다.
또한 패턴이 일치하면 괄호에 따라 데이터를 자르고 배열에 0번방부터 넣어버린다.
여기서 조심할 점은 groupCount()메소드와 group()메소드는 데이터와 패턴이 일치해야 에러없이 작동한다는 것이다.
따라서 항상 패턴이 일치하는지를 확인 후 사용해야한다는 것을 유의하자.
이처럼 정규표현식은 많은 데이터에서 데이터의 규칙을 찾고 그 규칙에 따라 데이터를 나누고 추출할 때 많이 사용한다.
정규표현식을 잘 사용한다면 정규표현식 없이 데이터를 정리하는 코드보다 훨씬 간결하고 압축된 코드를 구성할 수 있다.
'Java' 카테고리의 다른 글
[Java]Date 클래스 (0) | 2022.03.10 |
---|---|
[Java]Math 클래스 (0) | 2022.03.10 |
[Java]String Buffer (0) | 2022.03.09 |
[Java]String 클래스 Basic (0) | 2022.03.09 |
[Java]Wrapper class - part.3(Character) (0) | 2022.03.08 |