[Java] 문자열 자르기(추출) - 정규표현식 예제
2021. 1. 8. 23:46ㆍ프로그래밍 언어/Java
이번 시간에는 정규표현식을 활용할 수 있는 예제를 살펴보도록 하겠습니다.
여기에 있는 예제를 참고하셔서 그대로 활용할 수 있는 것들이 있으시면 사용하시면 됩니다.
만약 원하시는 예제가 없다면 예제들을 참고하셔서 용도에 맞게 생성하셔서 사용하시면 될 듯 합니다.
정규표현식 간단예제
간단한 정규표현식 예제로 숫자, 문자 구분 용도로 사용할 수 있습니다.
숫자만 존재 | ^[0-9]*$ |
숫자 최소 1개 이상 존재 | ^[0-9]+$ |
한글만 존재 | ^[가-힣]*$ |
영어 + 숫자만 존재 | ^[a-zA-Z0-9]*$ |
휴대폰 | ^01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4}$ |
이미지 파일 | ([^\s]+(\.(?i)(jpg|png|gif|bmp))$) |
이메일 | ^[A-Za-z0-9+_.-]+@(.+)$ |
IP | ([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}) |
이메일의 경우 간단 버전이라서 strict하게 패턴을 체크하지 않습니다.
즉, abc@def.com@와 같이 잘못된 이메일 형식도 인식합니다.
그래도 @def.com과 같이 이메일 앞 부분이 누락된 경우는 체크됩니다.
IP도 간단버전이라서 256를 넘어서는 값이 있어도 인식합니다.
정규표현식 예제
실제 프로그래밍할 때 사용할만한 조금 더 복잡하고 패턴을 잘 인식하는 정규표현식입니다.
그렇다고 완벽한 것은 아니므로 필요한 부분이 있으시면 조금씩 수정해서 사용하시는 것이 좋습니다.
이메일 | ^[a-zA-Z0-9_!#$%&’*+/=?`{|}~^.-]+@[a-zA-Z0-9.-]+$ |
IP | "^((25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])(\\.(?!$)|$)){4}$ |
이메일 예제 패턴을 활용한 소스코드 및 출력입니다.
출력결과를 보시면 그래도 왠만한 이메일을 인식할 수 있습니다.
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("abc@def.com");
list.add("abc@def.co.kr");
list.add("abc.kkk@def.com");
list.add("abc?kkk@def.com");
list.add("abc123@def.com");
list.add("@def.com");
list.add("abc@def.com@");
for (String str : list) {
Pattern p = Pattern.compile("^[a-zA-Z0-9_!#$%&’*+/=?`{|}~^.-]+@[a-zA-Z0-9.-]+$");
Matcher m = p.matcher(str);
System.out.println(str + " = " + m.matches());
}
}
// 출력
abc@def.com = true
abc@def.co.kr = true
abc.kkk@def.com = true
abc?kkk@def.com = true
abc123@def.com = true
@def.com = false
abc@def.com@ = false
IPv4 예제 패턴을 활용한 소스코드 및 출력입니다.
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("0.0.0.0");
list.add("255.255.255.255");
list.add("127.0.0.1");
list.add("1.11.111.255");
list.add("255.222.22.2");
list.add("255.255.255.256");
list.add("-1.1.1.1");
list.add("1.2.3.4.5");
String ipPattern = "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";
for (String str : list) {
Pattern p = Pattern.compile(ipPattern);
Matcher m = p.matcher(str);
System.out.println(str + " = " + m.matches());
}
}
// 출력
0.0.0.0 = true
255.255.255.255 = true
127.0.0.1 = true
1.11.111.255 = true
255.222.22.2 = true
255.255.255.256 = false
-1.1.1.1 = false
1.2.3.4.5 = false
관련글:
2021/01/04 - [Java] - [Java] 문자열 자르기(추출) - 정규표현식(Pattern, Matcher)
반응형
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] j2ssh 로그 비활성화 (disable) 설정 (0) | 2021.02.21 |
---|---|
[Java] Date - 오늘 날짜/시간 출력 (0) | 2021.02.15 |
[Java] 문자열 자르기(추출) - 정규표현식(Pattern, Matcher) (0) | 2021.01.04 |
[Java] 문자열 자르기 - char형 구분자 (0) | 2020.12.30 |
[Java] 문자열 자르기 - 정규표현식(split) (0) | 2020.12.28 |