This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| regular_expression [2022/10/15 12:50] – [Java 전용 표현] ledyx | regular_expression [2022/10/16 15:21] (current) – 문단 수정 ledyx | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| = Regular Expression = | = Regular Expression = | ||
| - | {{tag> | + | {{tag>Regex RegExp Regular_Expression |
| + | |||
| + | |||
| + | 일부 내용은 [[https:// | ||
| + | |||
| + | = 기본 개념 = | ||
| + | |||
| + | == Basic Metacharacters == | ||
| + | |||
| + | |< | ||
| + | ^ Metacharacter | ||
| + | | | ||
| + | | | ||
| + | | | ||
| + | | ? | ||
| + | |||
| + | |< | ||
| + | ^ Metacharacter | ||
| + | | < | ||
| + | | < | ||
| + | |||
| + | == 범위 == | ||
| + | |||
| + | |< | ||
| + | ^ Metacharacter | ||
| + | | < | ||
| + | | < | ||
| + | | | ||
| + | |||
| + | |< | ||
| + | ^ Metacharacter | ||
| + | | < | ||
| + | | < | ||
| + | | < | ||
| + | | < | ||
| + | | < | ||
| + | | < | ||
| + | |||
| + | == 공백 문자 == | ||
| + | |||
| + | |< | ||
| + | ^ Metacharacter | ||
| + | | | ||
| + | |||
| + | ^ Metacharacter | ||
| + | | | ||
| + | | | ||
| + | | | ||
| + | | | ||
| + | | | ||
| + | |||
| + | ^ Metacharacter | ||
| + | | | ||
| + | | | ||
| + | |||
| + | == Quantifier == | ||
| + | |||
| + | 수량자. {// | ||
| + | |||
| + | 과하게 일치하는 상황 방지 | ||
| + | |||
| + | * Greedy Qualifier : 최대로 일치 | ||
| + | * Lazy Qualifier : 최소로 일치 | ||
| + | |||
| + | |< | ||
| + | ^ Greedy Qualifier | ||
| + | | | ||
| + | | | ||
| + | | | ||
| + | |||
| + | |||
| + | === 예시 === | ||
| + | |||
| + | < | ||
| + | (? | ||
| + | </ | ||
| + | <bg skyblue>< | ||
| + | |||
| + | |||
| + | < | ||
| + | (? | ||
| + | </ | ||
| + | <bg skyblue>< | ||
| + | |||
| + | |||
| + | == 위치 지정 == | ||
| + | |||
| + | |< | ||
| + | ^ Metacharacter | ||
| + | | < | ||
| + | | < | ||
| + | | < | ||
| + | |||
| + | |||
| + | |< | ||
| + | ^ Metacharacter | ||
| + | | | ||
| + | | | ||
| + | |||
| + | |||
| + | == Lookaround == | ||
| + | |||
| + | 일치하는 영역을 제외하고, | ||
| + | |||
| + | 부정형은 "< | ||
| + | |||
| + | |< | ||
| + | ^ Metacharacter | ||
| + | | < | ||
| + | | < | ||
| + | |||
| + | ^ Metacharacter | ||
| + | | < | ||
| + | | < | ||
| + | |||
| + | === 예시 === | ||
| + | |||
| + | * 긍정형 전방탐색 | ||
| + | |||
| + | < | ||
| + | .+(?=:) | ||
| + | </ | ||
| + | |||
| + | <bg skyblue> | ||
| + | <bg skyblue> | ||
| + | <bg skyblue> | ||
| + | |||
| + | * 긍정형 후방탐색 | ||
| + | |||
| + | < | ||
| + | (?< | ||
| + | </ | ||
| + | |||
| + | A11 : $<bg skyblue> | ||
| + | B22 : $<bg skyblue> | ||
| + | Total items found : 2 | ||
| + | |||
| + | * 부정형 전후방탐색 | ||
| + | |||
| + | < | ||
| + | \b(?< | ||
| + | </ | ||
| + | |||
| + | I paid $30 for <bg skyblue> | ||
| + | <bg skyblue> | ||
| + | I saved $5 on this order. | ||
| + | |||
| + | |||
| + | == Backreference == | ||
| + | |||
| + | **괄호로 감싼 하위 표현식**을 참조하는 정규 표현식. $1~n 으로 표현. (일부 언어는 $대신 /을 사용하기도 한다.) | ||
| + | |||
| + | 변수와 비슷. | ||
| + | |||
| + | === 예시 === | ||
| - | Java에서 아래와 같은 구문으로 이용한다. | ||
| <sxh java> | <sxh java> | ||
| - | Pattern p = Pattern.compile("^REGULAR_EXPRESSION$", | + | String eg1 = " |
| - | Matcher m = p.matcher(STRING); | + | String result1 = eg1.replaceAll("(\\w+[\\w.]*@[\\w.]+\\.\\w+)", |
| - | boolean b = m.matches(); | + | System.out.println(result1); // Hello, <a href=" |
| + | |||
| + | String eg2 = " | ||
| + | String result2 | ||
| + | System.out.println(result2); // (031) 123-1234 | ||
| </ | </ | ||
| - | = Java 전용 표현 | + | |
| + | |||
| + | = 언어별 활용 = | ||
| + | |||
| + | == Java == | ||
| https:// | https:// | ||
| - | == Pattern Constant == | + | <sxh java> |
| + | Pattern p = Pattern.compile(" | ||
| + | Matcher m = p.matcher(STRING); | ||
| + | boolean b = m.matches(); | ||
| + | </ | ||
| + | |||
| + | === Pattern Constant | ||
| <sxh> | <sxh> | ||
| Line 25: | Line 192: | ||
| </ | </ | ||
| - | == POSIX character classes (US-ASCII only) == | + | === POSIX character classes (US-ASCII only) === |
| <sxh> | <sxh> | ||
| Line 42: | Line 209: | ||
| \p{Space} A whitespace character: [ \t\n\x0B\f\r] | \p{Space} A whitespace character: [ \t\n\x0B\f\r] | ||
| </ | </ | ||
| - | = 활용 = | ||
| - | == 전화번호 == | ||
| - | <sxh java> | ||
| - | ^(02|0[3-6]{1}[1-5]{1})-? | ||
| - | ^(15(44|77|88|99)|1644)-? | ||
| - | </ | ||
| - | |||
| - | == 소괄호 안 문자(= Parameter) 추출 == | ||
| - | <sxh java> | ||
| - | String str = "(int a, int b)"; | ||
| - | |||
| - | Pattern p = Pattern.compile(" | ||
| - | Matcher m = p.matcher(str); | ||
| - | |||
| - | while(m.find()) | ||
| - | System.out.println(m.group(1)); | ||
| - | </ | ||