UroA 개발 블로그

[JAVA] 정규표현식이란? 본문

Programming/JAVA

[JAVA] 정규표현식이란?

UroA 2016. 1. 4. 15:11

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. 정규표현식의 문법


정규표현식을 자바언어에서 이용하기 위해서는 먼저 정규표현식을 표현하는 방법부터 자세히 알 필요가 있습니다.


.

하나의 문자를 의미합니다.

즉, 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모두가 될 수 있습니다.


\w : 알파벳이나 숫자

\W : 알파벳이나 숫자를 제외한 문자

\d : 숫자 [0-9]와 동일

\D : 숫자를 제외한 모든 문자


^[0-9]*$  :  숫자만

^[a-zA-Z]*$  :  영문자만

^[가-�R]*$  :  한글만

^[a-zA-Z0-9]*$  :  영어/숫자만


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])$



'Programming > JAVA' 카테고리의 다른 글

[JAVA] HashMap 사용법  (0) 2015.12.29
[JAVA] JAVA ERROR 모음  (0) 2015.11.24
[JAVA] static 키워드 바로알기  (2) 2015.11.20
Comments