정규식
Character classes
|
설명 |
\d |
한개의 숫자 0-9 |
\s |
빈 공백 |
\w |
알파벳 대소문자 or 숫자 or _ 3 중 하나, [a-zA-Z_]와 동일함 |
\D |
한개의 숫자가 아닌 나머지 모든 것, [ ^\d ] 와 동일함 |
\S |
공백이 아닌 모든 것 , [ ^\s ]와 동일함 |
\W |
알파벳 대소문자 or 숫자 or _ 아닌 모든 것 , [ ^a-zA-Z0-9_] 와 동일함 |
\ |
특수문자가 아닌 경우, 예) \ . 이렇게 설정하면 마침표로 인식함 |
. |
모든 문자(공백 포함) |
Groups and ranges
|
설명 |
| |
또는, 예) a|b 는 a 또는 b , (ab|bc) 는 ab 또는 bc |
() |
그룹을 나눔 (https://[a-z])? ,https://[a-z] 패턴이 하나의 그룹이됨. 1개 또는 0개 일때, |
[ |
괄호안에 어떤 문자든 가능, 예) [a-z] a부터 z까지 모든 알파벳 일치하는 경우 |
[^] |
부정 문자셋, 괄호 안에 있는 문자 이외에 모든 것(부정), 예) [ ^abc ] a,b,c중 아닌 것만! |
(?:) |
그룹을 만들때 사용하며 해당 패턴을 찾지만 기억하지 않음 (?:https://[a-z]) , https://[a-z]찾지만 그룹 형태로 기억하지 않음 |
Quantifiers
|
설명 |
? |
없거나 1개 있거나 (0,1)개, 예) abc? ab에서 c가 없거나 있거나! , ab() |
* |
없거나 있거나 0개 포함 그 이상 |
+ |
1개 이상 |
{3} |
정확히 딱 3개만 , 예시: [a-z]{3} , a부터 z 중 3개 / abc, sdf, wed |
{3,} |
3개 이상, 예시: [a-z]{3,} , a부터 z 중 3개 이상 / abc, abcd , sdfbcdefg |
{2,3} |
2개이상 3개 미만: [A-Z]{2,3} , A부터 Z 중 2개 이상 3개 미만 / QWD, ERF, SW, WW |
Boundary-type
|
설명 |
\b |
단어 경계, 예를 들어 \bYa 했을때 YaYaYa 에서는 앞에 단어 처음 두글자 Ya만 인식함. |
\B |
단어 경계 아닌 부분 \BYa 했을때 YaYaYa에서는 앞에 단어 둘 글자 제외하고 뒤에서 부터 찾음YaYa(O) |
^ |
문장의 시작, 예) ^abc는 abc로 시작한 문자 찾아줌 abc(O) , qwerabc(X) |
$ |
문장의 끝, 예) ^abc[a-z]{3}$ , abc로 시작하고 a부터z까지 중 3개로 끝나는 것 ex) abcaee(O), abca(X) |
Java에서 Pattern 클래스 사용한 정규표현식 활용
String regExp="(02|010)-\\d{3,4}-\\d{4}";//전화번호 정규식
// 정규식 패턴, \d에서 \를 인식할 수 있도록 \ 하나 더 붙여줌--> \\d;
String data="010-123-4567";
boolean result=Pattern.matches(regExp, data);
//Pattern 클래스의 matches(정규식패턴, 문자열)를 사용해서 패턴과 일치하면 true 아니면 false 출력함
if(result) {
System.out.println("정규식과 일치합니다");
}else {
System.out.println("정규식과 일치하지 않습니다");
}
regExp="\\w+@\\w+\\.\\w+(\\.\\w+)?";//이메일 정규식
/* \\w+@ 알파벳 대소문자 또는 숫자 또는 _ 중 1개 이상과 @ 포함
* \\w+\\. 알파벳 대소문자 또는 숫자 또는 _ 중 1개 이상과 . 포함
* \\w+ 알파벳 대소문자 또는 숫자 또는 _ 중 1개 이상
* (\\.\\w+)? 그룹 1: \\.\\w+ .포함 알파벳 대소문자 또는 숫자 또는 _ 1개 이상을 포함한 그룹 1이 있거나 없거나
*
* */
data="asdf123@naver.com";
result=Pattern.matches(regExp, data);
if(result) {
System.out.println("정규식과 일치합니다");
}else {
System.out.println("정규식과 일치하지 않습니다");
}
참고자료
https://www.youtube.com/watch?v=t3M6toIflyQ&t=1139s
https://www.youtube.com/watch?v=1BTGSVhNDu8
댓글