[Java] 문자열 자르기(추출) - 정규표현식 예제

2021. 1. 8. 23:46Java

 

이번 시간에는 정규표현식을 활용할 수 있는 예제를 살펴보도록 하겠습니다.

여기에 있는 예제를 참고하셔서 그대로 활용할 수 있는 것들이 있으시면 사용하시면 됩니다.

만약 원하시는 예제가 없다면 예제들을 참고하셔서 용도에 맞게 생성하셔서 사용하시면 될 듯 합니다.

 

정규표현식 간단예제

간단한 정규표현식 예제로 숫자, 문자 구분 용도로 사용할 수 있습니다.

숫자만 존재 ^[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] 문자열 자르기(추출) - 정규표현식(Pattern, Matcher)

문자열을 정해져있는 구분자가 아닌 문자열 패턴으로 인식해서 자르기 또는 추출을 할 수 있는 방법이 있습니다. 정규표현식(Regular expressions)을 이용한 방법으로 정규식이라고 부르기도 합니다.

smartpro.tistory.com

 

 

반응형