일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Linux
- Repository
- cordova
- IT 도서
- rest
- SSH Key
- ssh
- Android
- JSP
- commit
- ubuntu
- Q-Map
- AWS
- 안드로이드
- Ionic
- Retrofit
- angularJs
- node.js
- node
- git
- 자바
- EC2
- express
- gmaps
- java
- 저장소
- 인공지능
- 깃
- HTML
- mean
- Today
- Total
UroA 개발 블로그
[JAVA] 정규표현식이란? 본문
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 |