[^ ]
: 대괄호와 ^를 사용하면 특정 문자를 제외할 수 있다.
[^abc] will match any single character except for the letters a, b, or c.
실습 (b를 제외한 문자열 찾기)
hog
dog
bog (skip)
->[^b]og
([hd]og
)
여러 문자 범위를 개별 문자와 함께 동일한 대괄호 세트에 사용할 수도 있다.
\w
: 문자 범위 [A-Za-z0-9_]와 동일하고 영어 텍스트의 문자를 일치시키는 데 자주 사용되는 영숫자 메타 문자
\W
: 특수문자만
대소문자가 구분된다.
Ana
Bob
Cpc
aax (skip)
bby (skip)
ccz (skip)
->[A-C][n-p][a-c]
아래의 반복 구문의 일부는 모든 정규식 구현에서 지원되지 않는다.
반복되는 문자 찾기 -> 원하는 문자 수를 정확히 명시하기
ex) /d/d/d -> 세 자리 문자
{ }
: 원하는 문자의 반복 횟수 지정하기
ex) a{3} -> a 3번 반복 -> aaa
a{1,3} -> a 1에서 3번 반복 -> a, aa, aaa
[wxy]{5} ->
(각 문자는 w, x 또는 y일 수 있음)
wxy 5번 반복
.{2,6} -> . 2에서 6번 반복 -> .., ..., ...., ....., ......
실습
wazzzzzup
wazzzup
wazup (skip)
->waz{3,5}up
* (\d*)
: 0 이상 반복
+ (\d+)
: 1 이상 반복
ex) [abc]+ -> a, b 또는 c가 1개 이상 있다.
이러한 수량자는 모든 문자 또는 특수 메타 문자와 함께 사용할 수 있다.
aaabcc
aabbbbc
aacc
a (skip)
->aa+b*c+
(a{2,4}b{0,4}c{1,2}
)
?
: 0개 또는 선행 문자 또는 그룹 중 하나와 일치시킬 수 있다.
ex) ab?c -> b는 선택이다. -> ac 또는 abc.
\?
: 실제 물음표가 있는 문자 찾기
실습
1 file found?
2 files found?
24 files found?
No files found. (skip)
->\d+ files? found\?
공백 문자는 다른 문자와 동일하며 별표 및 더하기와 같은 특수 메타 문자도 사용할 수 있다.
\S
: Any Non-whitespace character
실습 (하나 이상 공백이 있는 문자열 찾기)
- abc
- abc
- abc
4.abc (skip)
->\d\.\s+abc
Mission: successful
Last Mission: unsuccessful (skip)
Next Mission: successful upon capture of target (skip)
->^Mission: successful$
정규 표현식을 사용하면 텍스트를 일치시킬 뿐만 아니라 추가 처리를 위해 정보를 추출할 수 있다.
( )
: 한 쌍의 괄호 안에 있는 모든 하위 패턴은 그룹으로 캡처된다.
ex) ^(IMG\d+.png)$ -> 파일 확장자까지 캡처
^(IMG\d+) -> 확장자 없이 파일 이름만 캡처
실습 (파일명만 캡쳐하기)
file_record_transcript.pdf
file_07241999.pdf
testfile_fake.pdf.temp (skip)
->^(file.+)\.pdf$
(())
: 중첩되어서 캡쳐할 수 있다.
순서는 왼쪽 -> 오른쪽 으로 읽는다.
실습
Jan 1987
May 1969
Aug 2011
->^(\w+ (\d+))$
별표 *, 더하기 +, 반복 {m,n} 및 물음표 ? 는 캡처 그룹 패턴 내에서 모두 사용할 수 있다. 이것은 개별 문자 자체 대신 문자 시퀀스에 수량자를 적용하는 유일한 방법입니다.
몇 자리 숫자가 들어갈 지 모를 때 {숫자}가 아닌 +로 쓴다.
실습
1280x720 -> 1280 720 캡쳐
1920x1600 -> 19200 1600 캡쳐
1024x768 -> 1024 768 캡쳐
->(\d+)x(\d+)
| (논리적 OR, 파이프라고도 함)
: 그룹을 사용할 때 가능한 다른 문자 집합을 나타냅니다
ex) Buy more (milk|bread|juice) -> Buy more milk, Buy more bread, Buy more juice
메타 문자 쓸 수 있지만 너무 복잡해지면 패턴으로 만들자.
실습
I love cats
I love dogs
I love logs (skip)
I love cogs (skip)
->I love (cats|dogs)
메타캐릭터의 소문자를 대문자로 바꾸면 반대의 의미가 된다.
- \D: 숫자가 아닌 문자
- \S: 공백이 아닌 문자
- \W: 점과 같은 영숫자가 아닌 문자.
\b
: 단어와 단어가 아닌 문자 사이의 경계와 일치하는 특수 메타 문자
전체 단어를 캡처하는 데 가장 유용하다(예: \w+\b 패턴 사용).
구현에 따라 다르긴 하지만, 캡처된 그룹을 참조할 수 있다.
- \0: 일반적으로 전체 일치 텍스트
- \1: 그룹 1
- \2: 그룹 2
실습
The quick brwon fox jumps over the lazy dog.
There were 614 instances of students getting 90.0% or above.
The FCC had to censor the network for saying &$#@!
-> `.` (이외에 다양한 답이 있을 수 있다.)
표현 | 의미 |
---|---|
abc... | Letters |
123... | Digits |
\d | Any Digit |
\D | Any Non-digit character |
. | Any Character |
\. | Period |
[abc] | Only a, b, or c |
[^abc] | Not a, b, nor c |
[a-z] | Characters a to z |
[0-9] | Numbers 0 to 9 |
\w | Any Alphanumeric character |
\W | Any Non-alphanumeric character |
{m} | m Repetitions |
{m,n} | m to n Repetitions |
* | Zero or more repetitions |
+ | One or more repetitions |
? | Optional character |
\s | Any Whitespace |
\S | Any Non-whitespace character |
^…$ | Starts and ends |
(…) | Capture Group |
(a(bc)) | Capture Sub-group |
(.*) | Capture all |
(abcㅣdef) | Matches abc or def |