티스토리 뷰

SW개발/Java

[종합] 자바 정규표현식

개소왕 2018. 3. 9. 15:44

* 기초 

http://www.nextree.co.kr/p4327/



* 확인 사이트

https://regexr.com/

https://regex101.com/


사이트마다 한글, 한자, 특수문자, 유니코드 표현 등이 가능/불가능 한것 차이가 있음.



* 'and' 조건 표현

Lookahead (?=) 활용하여 AND 연산자 표현 가능함.


http://dogcowking.tistory.com/229



* 영어 대,소문자에 대한 표현

http://dogcowking.tistory.com/84


[A-Za-z]+

\w+

[\p{Lu}\p{Ll}\p{Lt}]+



* 한글

[ㄱ-ㅣ가-힣]+ 


https://blog.gaerae.com/2015/10/postgresql-hangul-regular-expression.html

유니코드, 아스키코드 이용법


* 한자

[一-龥]

[\u4E00-\u9FD5]


http://koverjk.com/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%ED%95%9C%EC%9E%90/




[ 정규표현식 응용 ]

* 출처 사이트




* 이메일

[0-9a-zA-Z]+(.[_a-z0-9-]+)*@(?:\w+\.)+\w+


[a-z0-9_+.-]+@([a-z0-9-]+\.)+[a-z0-9]{2,4}


([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)




- 첫번째의 자바코드

String sPat = "[0-9a-zA-Z]+(.[_a-z0-9-]+)*@(?:\\w+\\.)+\\w+$"


- 세번째는 도메인의 글자수 제한까지 표현하고 있음.




* URL 웹 주소


https?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?


(file|gopher|news|nntp|telnet|https?|ftps?|sftp):\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*


(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?


((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?


((http|ftp|https):\/\/)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)




- 세번째는 네번째와 동일하며  http:// https:// 를 포함 안한 경우도 해당됨

- 다섯번째는 글자수 제한까지 포함하고 있음

- 다섯번째의 자바코드

String sPat = "((http|ftp|https):\\/\\/)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)";



- 다음의 경우를 테스트해봄

http://abc.com?url=http://def.com

http://abc.com/한글파람

http://abc.com/%ED%95%9C%EA%B8%80%ED%8C%8C%EB%9E%8C

https://abc.com 띄어쓰기 포함

https://www.google.co.kr/search?ei=17RzW73LA4iS8wXi75uYAQ&q=url+%ED%98%95%ED%83%9C&oq=url+%ED%98%95%ED%83%9C&gs_l=psy-ab.3..35i39k1j0j0i67k1j0l7.1787.5336.0.5485.11.10.0.0.0.0.176.757.0j6.6.0....0...1.1j4.64.psy-ab..5.6.755...33i160k1.0.tCQekIyIpvU



패턴 순서 

 URL된 파라메터

한글주소 

특수문자 

띄어쓰기 배제

구글검색주소

(특수문자 포함) 

첫번째

 X

 X

 O

 X

두번째

 O

 O

O

 X

세번째

 X

 O

 O

 O

네번째

 X

 O

 O

 O

 O

다섯번째

 O

 X

 O

 O

 O


한글주소가 특수한 경우이므로 5가 정확히 표현이지만,

한글 주소 써야 하는 상황에서 3,4 의 사용이 적당



- 참고 : java.net.URL 소스에 URL 검사하는 별도의 정규표현식은 없었음.



*전화번호


\d{2,3}-\d{3,4}-\d{4}


[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}


/(\d{3}).*(\d{3}).*(\d{4})/


- 핸드폰 번호

^01(?:0|1|[6-9])(?:\\d{3}|\\d{4})\\d{4}$

// 010, 016~019 사이를 충족해야함, "-" 허용안함




* 소수점

[0-9]{1,3}\.?[0-9]*%



* IP 주소

([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})


(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)



첫번째 방법은 세자리 숫자로 정의한 것이다.
IP주소는 0~255 까지밖에 쓰이지 않으므로 정확한 표현은 아니다.

두번째 표현이 숫자 범위까지 고려한 정확한 방법이다.



* 주민등록번호
[0-9]{6}-[0-9]{7}

[0-9][0-9][01][0-9][0123][0-9]-[1234][0-9]{6}


주민번호, -까지 포함된 문자열로 검색
(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}


^\d{6}[1-4]\d{6}





* HTML 태그

* A태그
<(a)\b[^>]*>


* html 태그
\<(/?[^\>]+)\>




* 날짜

날짜 - 예, 3/28/2007 혹은 3/28/07: /^\d{1,2}\/\d{1,2}\/\d{2,4}$/

 






* jpg, gif 또는 png 확장자를 가진 그림 파일명
/([^\s]+(?=\.(jpg|gif|png))\.\2)/ 


16 진수로 된 색깔 번호: /#?([A-Fa-f0-9]){3}(([A-Fa-f0-9]){3})?/ 



* capture group 사용

http://dogcowking.tistory.com/230


괄호로 묶으면 Matcher#group() 으로 패턴 일치부분만 가져와서 활용

group() 대신 $1, $2,.. 로 표현하여 치환 등에 별도로 이용 가능


* 역참조

캡쳐된 그룹의 문자열이 패턴내에서 더 반복되어야 하는 경우

http://minsone.github.io/regex/regexp-backreference



* 이클립스에서 정규표현식 이용한 치환

https://lng1982.tistory.com/159









-- 편집 참고 

http://blog.daum.net/dogcowking/166


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함