728x90
반응형
/*   @(#)kimenseok.com 2007/04/08  */

1. 정규식이란?

특정한 문자열의 의 검색,치환,추출을 위한 패턴을 의미합니다.
wiki에는 아래와 같이 정의하고 있습니다.

A regular expression is a string that describes or matches a set of strings, 
according to certain syntax rules.
우리는 이러한 정규식을 습득함을 통해서 수많은 이점을 가져올 수 있습니다.

2. 정규식 만들기

Java에서는 아래와 같이 정규식을 작성할 수 있습니다.

Pattern p = Pattern.compile("패턴"); 
Matcher m = p.matcher("문자열"); 
boolean b = m.matches();



boolean b = Pattern.matches("패턴", "문자열 패턴");







또는, String.replaceAll("패턴", "문자열")을 통해서도 정규식 사용이 가능합니다.

3. 정규식 표현법

정규식을 표현하는 방법은 아래와 같은 표를 통해 사용이 가능하며, 
아래 코드표는 Sun에서 제공하는 튜토리얼에 기준되어있습니다.

번역의 문제가 있을 수 있으니, 자세한 정보는 아래 주소를 참조하십시오.
http://java.sun.com/docs/books/tutorial/essential/regex/

정규식

설명

.

하나의 문자를 의미합니다.
즉, ab. 은 abc나 abd가 될 수 있습니다.

?

해당 패턴의 앞에 문자가(1개)없거나 혹은 한개가 존재하는 경우를 의미합니다. 즉, a?c는 abc도 될 수 있고, bc도 될 수 있습니다.

*

위와 거의 동일하나 하나 이상의 문자를 의미하게 됩니다.
즉, ab*는 aaa도 ab도 될 수 있다는 의미입니다.

^

문자열의 시작을 의미합니다.
즉, ^a는 a로 시작되는 문자를 검색하게 됩니다.

+

앞의 문자가 하나이상의 반복을 의미합니다.
즉, ab+는 abbbb가 될 수도 있다는 의미입니다.



[^]

괄호안의 형식을 제외한다는 의미입니다.
즉, [^a]bc는 a를 제외한 bc, bcd등을 나타냅니다.



$

문자열의 끝을 의미합니다.
즉, ab$가 되는 경우 반드시 b로 끝나는 문자를 나타냅니다.

[ ]

괄호안의 형식이 일치하는 경우를 나타냅니다.
즉, [ab]는 a,b,ab모두가 일치하게 됩니다.

( )

()안의 내용을 하나의 묶음으로 사용합니다.
즉, (ab)+는 위 +에 따라 ababab등을 나타냅니다.



{ }

안의 숫자에 따른 반복개수를 의미합니다.
즉, ab{2}는 abab를 나타냅니다.

|

or연산자와 동일합니다.
즉, a|b|c 는 a,b,c,abc모두가 될 수 있습니다.



4. 정규식 패턴예제

위의 표현방법의 조합을 통해서 우리는 다양하고 편리한 코드를 작성할 수 있습니다. 

E-mail 주소를 찾아내는 패턴
^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@ [A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$







이미지파일을 찾아내는 패턴
([^\s]+(\.(?i)(jpg|png|gif|bmp))$)







IP주소를 찾아내는 패턴
^([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])$



HTML 태그 중 링크를 찾아내는 패턴
(?i)<a([^>]+)>(.+?)</a>\s*(?i)href\s*=\s*(\"([^"]*\")|'[^']*'|([^'">\s]+));

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,