정규표현식
정규표현식이란, 문자열이 정해진 패턴으로 구성되어 있는지 검증해야할 때, 사용한다.
Pattern 클래스
- Java.util Pakage의 Pattern 클래스의 matcher(), matchers() 메서드를 정규표현식 검증에 이용한다.
static 메서드
1. compile(패턴) : 정규 표현 엔진(정규식)을 만들어 낸다.
2. matcher(검증 데이터) : 데이터를 비교해서 Matcher 클래스로 반환한다.
3. matchers(패턴, 검증 데이터) : 패턴으로 비교하여 boolean 형으로 반환한다.
Matcher 클래스
- find() : 해당 정규 표현을 찾아냄
- start() : 해당 정규표현의 시작 인덱스를 반환한다.
- group() : 해당 정규표현의 값을 반환한다.
- end() : 해당 정규표현식의 끝 인덱스를 반환한다.
package api.regex.basic;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexEx01 {
public static void main(String[] args) {
/*
* [0-9] - 숫자0~9 1개
* [a-z] - 소문자a~z 1개
* [0-9a-zA-Z] - 숫자 알파벳 1개
* [가-힣] - 한글 1개
*
* ? 0번 또는 1번
* * 0번이상 나옴
* + 1번이상 나옴
*
* [0-9]? = 숫자가 안나오거나 1번 나온다
* [0-9]{3} = 숫자가 정확히 3번 나온다
* [0-9]{3,4} = 숫자가 3이상 4이하 나온다
* [0-9]{3, } = 숫자가 3이상 나온다
*
* \\특수문자 - 정규표현식에서 사용하는 특수문자를 문자로 나타내고 싶은경우
* \\w - _이거나 영문자
* \\W - 반대
*
* \\d - 숫자
* \\D - 숫자의 반대
*
* () 값들의 집합
*/
//여기에서 정확히 전화번호 형식만 찾아봄
String info = "30세/서울시 강남구/02-123-4567/010-1234-5678/aaa@naver.com";
//String pattern = "[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}";
String pattern = "\\d{2,3}-\\d{3,4}-\\d{4}";
//정규표현식을 적용
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(info);
//find(), group(), start(), end()
while(m.find()) {
System.out.println("찾았다");
System.out.println("찾은문자:" + m.group() );
System.out.println("시작위치:" + m.start() );
System.out.println("끝위치:" + m.end() );
}
System.out.println("---------------------------------------");
//이메일형식
//String pattern2 = "[a-zA-Z0-9]+@[a-z]+\\.[a-z]+"; //^$ 시작끝을 나타내는데 생략이 가능함
String pattern2 = "\\w+@\\w+\\.\\w+";
Matcher m2 = Pattern.compile(pattern2).matcher(info);
while(m2.find()) {
System.out.println(m2.group());
}
}
}
package api.regex.basic;
public class RegexEx02 {
public static void main(String[] args) {
//주민번호 패턴을 찾아서 마스킹처리하기
String info = "홍길당,30세,강남구,123123-1231231";
String pattern = "[0-9]{6}-[0-9]{7}";
//매개변수가 regex인 메서드는 정규표현식 패턴을 적용할 수 있다는 의미입니다
String result = info.replaceAll(pattern, "******-*******");
System.out.println(result);
}
}
그 밖에 자주 이용되는 패턴
- \\d{3} : 연속된 숫자 3개를 찾는다.
- \\w : 문자를 찾는다.
- \\w+ : 문자 여러 개를 찾는다.
- [0-9] : 0-9사이의 문자를 찾는다.
- [a-z] : a-z사이의 문자를 찾는다.
- \\. \\[ \\? : . [ ? 등 특정 문자를 찾는다.
728x90
'Programming > Java' 카테고리의 다른 글
[JAVA] 자바 Network (0) | 2024.02.26 |
---|---|
[JAVA] 멀티 스레드 (0) | 2024.02.26 |
[ JAVA ] 익명 객체와 람다식 (0) | 2024.02.26 |
[JAVA] API - java.util 패키지 (Collection FrameWork) (0) | 2023.12.07 |
[JAVA] API-IO (Input 스트림과 Output 스트림) (1) | 2023.12.06 |