티스토리 뷰
* 기초
http://www.nextree.co.kr/p4327/
* 확인 사이트
사이트마다 한글, 한자, 특수문자, 유니코드 표현 등이 가능/불가능 한것 차이가 있음.
* '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]
[ 정규표현식 응용 ]
* 출처 사이트
* 이메일
[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:// 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 |
X |
O |
X |
두번째 |
O |
O |
O |
X |
O |
세번째 |
X |
O |
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]?)
* 날짜
날짜 - 예, 3/28/2007 혹은 3/28/07: /^\d{1,2}\/\d{1,2}\/\d{2,4}$/
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
'SW개발 > Java' 카테고리의 다른 글
이클립스 프로젝트 - Resource Location 폴더 변경 (0) | 2018.04.23 |
---|---|
Java PriorityQueue 우선순위 큐 (1) | 2018.04.13 |
자바 정규표현식 대소문자 (0) | 2018.03.09 |
자바 리스트 검색 (0) | 2018.02.01 |
jsoup html 추출시 개행 방법 (0) | 2017.11.01 |