티스토리 뷰
정규표현식 기본 정리 (언어마다 조금씩 다를 수 있음)
1. 텍스트를 그대로 적어주기
Hello | "Hello"를 찾아줌, "hello"는 찾을 수 없음 |
정규표현식은 기본적으로 대소문자를 구분한다
2.
Hello, world | "Hello, world"를 찾아줌 "Hello, world"는 찾을 수 없음 |
공백의 수도 정확히 구분한다
3.
^ | caret, 그 다음에 붙은 것이 찾는 곳에서 맨 앞에 있을 경우를 의미 |
^abc | "abc" 찾을 수 있음 "babc" 찾을 수 없음 단어 기준이 아니라 공간의 맨 앞을 의미 """ abc is abc abc is abc """ 인 경우 첫 번째 줄 맨 앞의 abc만 찾아짐 (환경마다 다른듯) |
단어의 시작되는 부분을 찾을 때는 ^, caret을 사용함
$ | $, 소스의 끝에 위치하는 대상을 지목할 때 찾을 수 있음 |
abc$ | "abc" 찾을 수 있음 "babc" 찾을 수 있음 "abcb" 찾을 수 없음 단어 기준이 아니라 공간의 맨 끝을 의미 """ abc is abc abc is abc """ 인 경우 두 번째 줄의 마지막 abc만 찾아짐(환경마다 다른듯) |
4.
대상이 되는 source | $12$ \-\ $25$ |
^$ | 아무것도 찾을 수 없음 ^ 시작을 의미 $ 끝을 의미 찾을 대상이 정해지지 않음 |
\$ | 백슬래시를 사용하면 백슬래시 뒤의 문자를 의미가 있는 문자가 아니라 단순한 문자로 인식 $12$ \-\ $25$ 볼드, 이탤릭 처리된 모든 달러 찾을 수 있음 |
^/$ | $12$ \-\ $25$ ^ 시작을 의미 \$ 의미(기능)없는 문자 $을 의미 맨 앞에 있는 $를 찾는 것임 |
\ | escape, 탈출을 의미하는데 \$ 인경우에 $가진 기능에서 탈출시키고 그냥 $를 찾는다는 의미 |
\$$ | $12$ \-\ $25$ |
\\ | $12$ \-\ $25$ |
5.
대상이 되는 source | Regular expressions are powerful!!! |
. | Regular expressions are powerful!!! 모든 character(문자)를 의미 |
...... | 6개의 문자를 의미, Regular expressions are powerful!!! 인데 순서대로 6개가 잡힘.. 어떤 의미냐면 [Regula][r expr][ession][s are ][powerf]ul!!! 으로 찾아짐 |
대상이 되는 source | O.K. |
. | O.K. |
\. | O.K. |
\..\. | O.K. 나눠서 보면 \. . . 모든문자(any character) \. . .모든문자. 인 조합을 찾는 것임 |
6.
[] | 대괄호, square braket a list of characters로 문자 하나를 찾는 것 |
대상이 되는 source | How do you do? |
[oyu] | How do you do? |
[dH]. | How do you do? [dH] d 또는 H . 모든 문자 |
[owy][yow] | How do you do? [][] 두개의 문자를 의미 첫번째 문자는 o or w or y 두번째 문자는 y or o or w 인 경우의 2개의 문자를 찾음 |
7.
- | dash,a range of chracters 를 의미 |
대상이 되는 source | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
[C-K] | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
[CDEFGHIJK] | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
[a-d] | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
[2-6] | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
[C-Ka-d2-6] | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
8.
[^] | caret이 대괄호 안에서 사용된 경우 not을 의미 |
대상이 되는 source | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
[^CDghi45] | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
[^W-Z] | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
9.
(on|ues|rida) | () braket 사이의 | pipe는 or을 의미 on 이거나 ues 이거나 rida를 찾는것 subpattern 이라고 지칭 |
대상이 되는 source | Monday Tuesday Friday |
(on|ues|rida) | Monday Tuesday Friday |
(Mon|Tues|Fri)day | Monday Tuesday Friday |
..(id|esd|nd)ay | Monday Tuesday Friday |
10.
* | 별표, asterisk 별표 앞에 어떤 패턴이 0에서 n개 등장하는 것 (있는 것, 없는 것 모두 포함) |
+ | 더하기, plus + 앞에 어떤 패턴이 1개이상 등장하는 것(0개 되지 않음) |
? | 물음표, question mark ? 앞에 어떤 패턴이 0개 혹은 1개 등장하는 것 |
대상이 되는 source | aabc abc bc |
a*b | aabc abc bc a가 0개부터 n개 있고 그 다음에 b가 있는 조합 a (a or aaaaa.... or non) b 의 조합 |
a+b | aabc abc bc |
a?b | aabc abc bc |
대상이 되는 source | -@-***--"*"--***-@- |
.* | -@-***--"*"--***-@- 모든문자가 해당되는 .이 0개일 수도 있고 n개일 수도 있어서 모두 다 선택됨 |
-A*- | -@-***--"*"--***-@- - 다음에 A가 0개 혹은 n개 그 다음에 다시 - 대문자 A가 없으니 -- 만 가능 |
[-@]* | -@-***--"*"--*** -@- -이거나 @ 다음에 -나 @가 더 나올 수도 있고 아닐수도 있다 |
대상이 되는 source | -@@@-***--"*"--***-@@@- |
\*+ | -@@@-***--"*"--***-@@@- |
-@+- | -@@@-***--"*"--***-@@@- |
[^ ]+ | -@@@-***--"*"-- ***-@@@- |
대상이 되는 source | --XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@- |
-X?XX?X | --XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@- |
-@?@?@?- | --XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@- |
[^@]@?@ | --XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@- |
11.
{} | curly bracket, 전의 패턴이 중괄호 안의 숫자만큼 반복되는 것 {n,m} 인 경우에는 n은 최소 개수, m는 최대 개수 {n, } 인 경우에는 n 이상이기만 하면 됨 |
대상이 되는 source | One ring to bring them all and in the darkness bind them |
.{5} | One ring to bring them all and in the darkness bind them |
[els]{1,3} | One ring to bring them all and in the darkness bind them |
[a-z]{3,} | One ring to bring them all and in the darkness bind them |
r.* | One ring to bring them all and in the darkness bind them |
r.*? | One ring to bring them all and in the darkness bind them 수량자 뒤에 ?가 붙는 경우에는 가능한 한 최소한 범위를 선택하게 됨 r다음에 .이 가능한 경우는 0과 n개인데, 0이 최소가능한 범위이기 때문에 r만을 찾게 됨 |
r.+ | One ring to bring them all and in the darkness bind them |
r.+? | One ring to bring them all and in the darkness bind them r다음에 .이 가능한 경우는 1개 또는 n개인 경우인데 최소로 선택할 수 있는 경우를 선택하기 때문에 r다음에애니캐릭터가 1개인 곳을 찾음 |
r.? | One ring to bring them all and in the darkness bind them |
r.?? | One ring to bring them all and in the darkness bind them r다음에 .이 0개 혹은 1개인 상황에서 가능한 한 최소범위인 r다음에 .이 0개인 범위를 찾게 됨 |
수량자 뒤의 물음표를 왜 사용할까? | 가능한 최소한의 범위를 찾게 됨 |
대상이 되는 source | <div>test</div><div>test2</div> |
<div>.+</div> | <div>test</div><div>test2<div> |
<div>.+?</div> | <div>test</div><div>test2</div> ?가 +수량선택자 뒤에 붙었으니 <div></div> 사이에 any character가 1개 이상인 경우에서 최소한으로 선택가능한 상황을 찾게 된다 그래서 <div>test</div>를 찾게 된다 (전체가 아님) |
\w | 문자 알파벳 대소문자와 숫자와 underscore [A-z0-9__] |
대상이 되는 source | A1 B2 c3 d_4 e:5 ffGG77--__-- |
\w* | A1 B2 c3 d_4 e:5 ffGG77--__-- |
[a-z]\w* | A1 B2 c3 d_4 e:5 ffGG77--__-- |
\w{5} | A1 B2 c3 d_4 e:5 ffGG77--__-- |
[A-z0-9_] | A1 B2 c3 d_4 e:5 ffGG77--__-- |
12.
\W | 문자가 아닌 것 숫자, 알파벳, underscore가 아닌 것 |
대상이 되는 source | AS _34:AS11.23 @#$ %12^* |
\W | AS _34:AS11.23 @#$ %12^* |
\w | AS _34:AS11.23 @#$ %12^* |
\d | 숫자, digit |
\D | 숫자가 아닌 것 |
\s | 공백 |
\S | 공백이 아닌 것 |
\b | a word boundary 말그대로 boundary이고, 그 자체로는 아무 것도 찾지 못한다 \b는 \b앞 혹은 뒤에 붙어서 붙어있는 패턴을 파악한후 \w인지 \W인지 구분한다. 그 다음 \w에 속하면 \W를 \b에 넣어서 찾는다 \W가 속하면 \d를 \w로 바꿔서 찾는다 |
대상이 되는 소스 | Ere iron was found or tree was hewn, When young was mountain under moon; Ere ring was made, or wrought was woe, It walked the forests long ago. |
\b. |
.은 모든것이 될 수 있음 최초 글자 E는 \w이기 때문에 \w가 뒤로 \W가 만나는 지점까지를 하나의 블럭으로 보고 맨앞자리를 반환 Ere가 \w이기 때문에 맨 앞의 E를 찾고 그다음 \W인 공백을 찾고, 그다음 iron에서 i를 찾음 |
.\b | \w집단, \W로만 구성된 집단에서 각 집단의 뒤를 찾음) Ere에서 e를 찾고, 공백에서 공백을 찾고, iron에서 n을 찾음 |
\B | 경계가 아닌 것 |
\B. | \w집단, \W집단을 찾아서 각 집단의 첫번째가 아닌 것을 찾는다 합쳐서 찾는게 아니라 각각 찾아짐 r,e,r,o,n |
.\B | \w집단, \W집단을 찾아서 각 집단의 마지막이 아닌 것을 찾음 |
13.
\A | 시작을 의미(환경마다 다른듯) |
\Z | 마지막을 의미(환경마다 다른듯) |
14.
(?=<pattern>) | <pattern>을 검색을 하지만 찾지는 않음 |
대상이 되는 source | AAAX---aaax---111 |
\w+(?=X) |
AAAX---aaax---111 \w+X 인 경우를 검색해서 \w+만 찾음 |
\w+(?=\w) | AAAX---aaax---111 \w+\w인 경우를 검색해서 \w+만 찾음 |
(?!<pattern>)
|
?! 뒤에 pattern 을 검색해서 존재한다면 앞의 부분을 반환하지 않음
|
대상이 되는 source
|
AAAX---AAA |
AAA(?!X) | AAAX---AAA |
아래 페이지에서 실습하기 좋음
참고
https://okky.kr/article/298826
https://stackoverflow.com/questions/14213848/difference-between-and
http://zvon.org/comp/r/tut-Regexp.html
https://opentutorials.org/module/622/5143
https://www.youtube.com/watch?v=Gg0tlbrxJSc
'programming > Others' 카테고리의 다른 글
3가지의 기본 제어 구조 - 순차 구조 sequence, 선택 구조 selection, 반복 구조 iteration (0) | 2023.05.05 |
---|---|
인터프리터 방식, 스크립트 방식, 소스파일, 변수 (0) | 2023.05.05 |
2진수(Binary), 16진수(Hexadecimal), 10진수(Decimal), 압축, 선형탐색, 이진탐색 (0) | 2023.04.26 |
컴퓨팅 사고의 4가지 요소 (1) | 2023.04.22 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- authorizationCode
- 회원가입
- unowned
- core data
- 강한 참조 순환
- weak
- escaping closrue
- 메모리 안정성
- 자동클로저
- Delegate 패턴
- Entity
- context
- ASAuthorizationAppleIDCredential
- SWIFT
- inout 파라미터 메모리 충돌
- 클로저표현
- 강한참조순환
- identity Token
- ios
- CoreData
- 클로저 축약
- 토큰저장
- Core Data Stack
- 클로저 강한 참조
- 디자인패턴
- Persistent Container
- autoclosure
- 클로저
- object
- 캡쳐리스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함