완벽하게 이해 하지 않고 있어서 테스트시 어려움이 있었음.
https://school.programmers.co.kr/learn/courses/11
정규표현식
평가 5.0 79개의 평가 ★★★★★78 ★★★★1 ★★★0 ★★0 ★0 hyewon 2022.10.08 02:53 meena2003 2022.09.10 01:06 NordicStyleWhite 2022.08.23 20:23 김동우 2022.08.22 11:53 Jang-myoung-gyoon 2022.08.19 07:54 리뷰 더보기
school.programmers.co.kr
전화번호만 찾는 정규표현식
- 0\d{1,2}[ -]?\d{3,4}[ -]?\d{3,4}
숫자 대표문자
- \d는 숫자를 대표하는 정규표현식
- d는 digit을 뜻합니다.
글자 대표문자
- \w는 글자를 대표하는 정규표현식
- a, b, c, 가, 나, 다, 1, 2와 같은 문자와 숫자를 포함합니다.
- 특수문자는 포함하지 않지만, _(언더스코어)는 포함합니다.
하나 이상
- \d+ 는 "하나 혹은 그 이상 연결된 숫자"를 의미
0개 이상
- *은 "0개 이상"이라는 뜻
- \d*는 "숫자가 0개 이상이다"를 의미
- 자연수는 [1-9]\d*로 표현할 수 있습니다.(0을 포함하고 싶을경우 [0-9]\d*)
있거나 없거나?(1)
전화번호는 "-"을 포함하거나, 포함하지 않을 수 있습니다.
021234567
02-123-4567
- ?는 '있거나 없거나'라는 뜻
- -?는 "-가 있거나 없다"를 의미
- \d+-?\d+-?\d+ (전화번호를 찾는 정규표현식)
있거나 없거나?(2)
앞에서 배운 \d+-?\d+-?\d+ 정규표현식은 한계가 있습니다. "010 2454 3457"과 같이 공백이 포함된 전화번호를 찾을 수 없지요.
021234567
010 2454 3457
- "-가 있거나 없다"는 조건이 아니라
- "- 또는 공백이 있거나 없다"는 조건을 써야 합니다.
- - 또는 (공백)이 있거나 없다는 조건은 [- ]?로 표현할 수 있습니다.
- \d+[- ]?\d+[- ]?\d+
n번
- {숫자}는 "숫자번 반복한다"는 뜻입니다. 예를 들어 \d{2}는 "숫자가 연속 두 번 나온다"는 뜻
- \d{2}[- ]?\d{3}[- ]?\d{4} 예) 00-000-0000 (〇), 02-123-4321(〇), 070-9999-9999(×)
n~m번
앞에서 배운\d{2}[- ]?\d{3}[- ]?\d{4} 정규표현식으로는 전화번호를 찾는데 한계가 있습니다. 전화번호의 첫 부분에 숫자가 3번(010 2454 3457) 나오는 경우를 인식하지 못하지요.
010 2454 3457
- {숫자1, 숫자2}는 "숫자1부터 숫자2까지 반복한다"는 뜻
- \w{2,3}는 "문자가 2 ~ 3번 나온다"는 뜻
- \d{2,3}[- ]?\d{3,4}[- ]?\d{4} (처음 2 ~ 3자리, 가운데 3 ~ 4자리, 마지막 4자리)
- 예) 00-000-0000 (〇), 02-123-4321(〇), 070-9999-9999(〇), 010 2454 3457(〇), 0030589-5-95826(×)
몇 개 중에 고르기
- 알파벳 중에 소문자 모음(a,e,i,o,u)만 고르고 싶을 땐
- 정규표현식에서 대괄호[ ] 안에 글자를 넣으면 해당 글자를 모두 선택할 수 있습니다.
- [aeiou] 예) a,e,i,o,u만 출력
범위에서 고르기(1)
- 소문자 알파벳만 고르고 싶을 땐
- [a-z]는 "a부터 z까지 글자를 모두 선택하라"는 의미
- [a-z]
범위에서 고르기(2)
- 연속된 영어 소문자를 찾으려면
- 소문자를 뜻하는 [a-z]와 반복을 뜻하는 +를 붙여 => [a-z]+를 씁니다.
한글 고르기
- 한글은 [가-힣]으로 찾을 수 있습니다
- [가-힣]+ 예) 한글로 적어진 글자들을 출력
- 단, 이 방식으로는 'ㄱㄴㄷ'이나 'ㅏㅑㅓㅕ'같은 낱글자는 찾을 수 없습니다.
기타 대표문자
- \s 공백 문자(스페이스, 탭, 뉴라인)
- \S 공백 문자를 제외한 문자
- \D 숫자를 제외한 문자
- \W 글자 대표 문자를 제외한 글자들(특수문자, 공백 등)
자바 정규표현식
- Java로 정규 표현식을 다룰 때에는 Pattern 클래스와 Matcher 클래스를 이용합니다.
- 주의할 점: Java에서는 \ 대신 \\를 적어야 합니다.
자바스크립트 정규표현식
- Javascript로 정규표현식을 다룰 때에는 String class의 match 함수를 이용할 수 있습니다.
자바스크립트 정규표현식
- Javascript로 정규표현식을 다룰 때에는 String class의 match 함수를 이용할 수 있습니다.
정규화식 테스트 사이트
https://qiita.com/grrrr/items/7c8811b5cf37d700adc4
正規表現の基本 - Qiita
この記事は「IDOM Engineer Advent Calendar 2017」の22日目の記事として加筆編集しました。 0. 正規表現の学習の前に はっきり言って、正規表現は一度や二度じゃないぐらい学習しているつもりでい
qiita.com
기본 문자 규칙
매칭기호 | Matches |
\\ | 백슬러쉬 문자 표현 |
\0n | 8진수 값이 0n인 문자(0 <= n <= 7) |
\0nn | 8진수 값이 0n인 문자(0 <= n <= 7) |
\0mnn | 8진수문자. (0 <= m <= 3, 0 <= n <= 7) |
\xhh | 16진수 문자. 0xhh hh는 16진수 |
\uhhhh | 16진수 문자 0xhhhh |
\t | 탭(tab) ('\u0009') |
\n | 개행 ('\u000A') |
\r | 캐리지 리턴 문자('\u000D') CR |
\f | 폼피드 Form feed('\u000C') |
\a | alert 경고 문자 |
\e | 이스케이프 문자('\u001B') |
\cx | x에 대응하는 제어문자 |
최장 일치 수량자
매칭기호 | Matches |
X? | X、이전 요소를 0개 또는 1개 찾습니다. |
X* | X、이전 요소를 0개 이상 찾습니다. |
X+ | X、이전 요소를 1개 이상 찾습니다. |
X{n} | X、이전 요소를 정확히 n 회 찾습니다. |
X{n,} | X、이전 요소를 최소한 n 회 찾습니다. |
X{n,m} | X、이전 요소를 n 회 이상, m 회 이하로 찾습니다. |
최단 일치 수량자
매칭기호 | Matches |
X?? | X、이전 요소를 가능한 한 적은 개수로 0개 또는 1개 찾습니다. |
X*? | X、이전 요소를 0개 이상 가능한 한 적은 개수로 찾습니다. |
X+? | X、이전 요소를 1개 이상 가능한 한 적은 개수로 찾습니다. |
X{n}? | X、이전 요소를 정확히 n 회 찾습니다. |
X{n,}? | X、이전 요소를 최소한 n 회 이상 가능한 한 적은 개수로 찾습니다. |
X{n,m}? | X、이전 요소를 n 회에서 m 회 사이에서 찾으며, 가능한 한 적은 개수로 찾습니다. |
논리 연산자
매칭기호 | Matches |
XY | X 다음 Y |
X|Y | X 또는 Y 문자가 존재함 |
(X) | 그룹을 표현하며 x 를 그룹으로 처리함 |
문자 클래스
매칭기호 | Matches |
[abc] | a, b, c 중 하나를 포함 |
[^abc] | a, b, c 이외의 문자 |
[a-zA-Z] | a~z, A~Z 사이의 문자 모두 포함 |
[a-d[m-p]] | a~d 또는 m~p [a-dm-p] 결합 |
[a-z&&[def]] | d, e, f 교차 |
[a-z&&[^bc]] | b와 c를 제외한 a~z:[ad-z] |
[a-z&&[^m-p]] | m~p를 제외한 a~z:[a-lq-z] |
정의 되어있는 문자클래스
구분 | Matches |
. | 임의의 문자 |
\d | 숫자: [0-9] |
\D | 숫자이외: [^0-9] |
\s | 공백:[ \t\n\x0B\f\r] |
\S | 공백아닌문자:[^\s] |
\w | 문자 또는 숫자:[a-zA-Z_0-9] |
\W | 문자 또는 숫자가 아닌 문자:[^\w] |
위치 정규식
구분 | Matches |
^ | 행의 선두 |
$ | 행의 끝 |
\b | 단어의 경계를 나타내는 문자 |
\B | 단어 내에서 문자의 경계가 아닌 문자. |
\A | 문자열의 시작점과 일치(내부 줄이 아닌) |
\G | 일치는 이전 일치가 종료된 위치 또는 이전 일치 항목이 없는 경우 일치가 시작된 문자열의 위치에서 시작 |
\Z | 문자열 끝나는 지점 |
\z | 문자열의 끝과 일치 (내부 줄이 아닌) |
참고사이트
https://qiita.com/grrrr/items/7c8811b5cf37d700adc4
https://learn.microsoft.com/ko-kr/dotnet/standard/base-types/regular-expressions
'IT > 설계관련' 카테고리의 다른 글
DB connection pool 및 스레드 개수 설정 (0) | 2023.12.19 |
---|---|
SOLID 원칙 이해 (0) | 2022.12.16 |
객체지향 프로그래밍의 개념 이해 (0) | 2022.09.20 |
【git】깃허브에 SSH(Secure Shell)원격 접속하기 (0) | 2022.03.05 |
【git】원격 저장소에서 파일 내려 받기 (0) | 2022.03.05 |