정규표현식(正規表現式, Regular Expression)은 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '추출', '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단이다.
- 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴
분류
관련 문법 내용 | 기 호 | 의 미 |
기본 메타 문자 | . | |
|(버티컬 바) | ||
[^] | ||
- | ||
\ | 다음에 오는 문자를 이스케이프 | |
수량자 | * | |
*? | ||
+ | ||
+? | ||
? | ||
{n} | ||
{m, n} | ||
{n, } | ||
{n, }? | 게으른 {n, } | |
위치 지정 | ^ | |
\A | ||
$ | ||
\Z | ||
\< | ||
\> | ||
\b | ||
\B | \b와 반대로 일치 | |
특수한 문자 | [\b] | |
\c | ||
\d | ||
\D | ||
\f | ||
\n | ||
\r | ||
\s | ||
\S | ||
\t | ||
\v | ||
\w | ||
\W | ||
\x | ||
\0 (숫자) | 8진수 숫자와 일치 | |
역참조와 전후방 탐색 | ( ) | |
\1(숫자) | ||
?= | ||
?<= | ||
?! | ||
?<! | ||
?(backreference)true | ||
?(backreference)true|false | ||
대소문자 변환 | \E | |
\I | ||
\L | ||
\u | ||
\U | \E를 만날 때까지 모든 문자를 대문자로 변환 | |
변경자 | (?m) | 다중행 모드 |
자주 사용되는 정규표현식
숫자[ 0 ~ 9 ] |
^[0-9]+$ |
이메일 형식만 가능 |
^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$ |
한글 |
^[가-힣]+$ |
한글+공백 |
^[가-힣]\s+$ |
영문 |
^[a-zA-Z]+$ |
한글+영문 | ^[가-힣a-zA-Z]+$ |
영문+숫자 | ^[a-zA-Z0-9]+$ |
휴대폰 번호 |
^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$ |
주민번호 (- 포함) |
^(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}$ |
url ( protocol 포함) |
/^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$ |
주석 |
\/\/.* |
적어도 소문자 하나, 대문자 하나, 숫자 하나가 포함되어 있는 문자열(8글자 이상 15글자 이하) |
(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,15} |
Java Example
자바에서 정규표현식과 함께 사용할 수 있는 클래스 및 인터페이스 다음과 같다.
(1) Pattern class
(2) Matcher class
(3) Match Result Interface
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 | public class Regex { public static void main(String[] args) { //영문+공 String regex = "^[a-zA-Z\\s]+$"; String input = "Hello World"; boolean matches = Pattern.matches(regex,input); //true System.out.println(matches); //찾고자하는 문자 + 공백 String findRegex = "Hello\\s"; Matcher matcher = Pattern.compile(findRegex).matcher(input); while(matcher.find()) { System.out.println(matcher.group()); // Hello + 공백 출력 String changeData = matcher.replaceAll("Change"); System.out.println(changeData); } } } | cs |
>>true
>>Hello
>>ChangeWorld
http://blog.daum.net/creazier/15309380
https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
'기타' 카테고리의 다른 글
Thread 분석 (0) | 2018.11.19 |
---|---|
Oracle JDK 유료화의 논쟁, OpenJDK와의 차이 (0) | 2018.11.03 |
DDD(Domain Driven Design) (0) | 2018.10.14 |
단축URL 서비스 (0) | 2018.07.08 |
Cheat Sheet (0) | 2018.06.13 |