정규 표현식 요약

텍스트 작업을 하는 경우 정규 표현식의 유용성을 잘 알게 될 것입니다. 이는 단어의 형태에 대해 복잡한 규칙을 세울 수 있게 해주는 작은 텍스트 문자입니다. 이러한 규칙은 문서에서 단일 문자를 일치시키는 것만큼 간단하거나 “a”와 “c”로 시작하지만 “ism”으로 끝나는 모든 단어를 찾는 것처럼 복잡할 수 있습니다.
이 요약 다운로드
아래에 이메일을 입력하면 이 PDF 요약을 받은 편지함에서 받을 수 있습니다.
필수 정규 표현식
정규 표현식(또는 줄여서 regex)은 리눅스 환경의 모든 곳에서 텍스트를 문자 단위로 검색하는 데 사용됩니다. 이 정규 표현식 요약은 간단하게 가끔씩 복습이 필요한 사람들에게 유용할 것입니다.
단, 중요한 점은 사용 가능한 정규 표현식 집합이 소프트웨어가 사용하는 표준 유형에 크게 의존한다는 것입니다. 예를 들어, 일반적인 리눅스 터미널은 종종 POSIX 표준을 사용하는 반면, Vim과 Perl은 비표준 정의를 사용합니다.
| 메타문자 | 설명 | 예시 |
|---|---|---|
| 문자 일치 | ||
| A | 문서에서 문자 “a”의 모든 인스턴스를 찾고 일치시킵니다. | a는 “ant”, “cat” 및 “anna”와 일치합니다. |
| . | 제어 문자를 제외한 모든 단일 문자와 일치시킵니다. | c.t는 “cat”, “cut” 또는 “cot”과 일치합니다. |
| * | 이전 표현식을 0회 또는 그 이상 반복합니다(탐욕적 모드). | 12*3은 “13”, “123”, “1223”, “12223”와 일치합니다. “.”와 함께 사용할 수 있으며, 예를 들어 m.*easier는 “maketecheasier”와 일치합니다. .*만 사용하는 것은 의미가 없으며 모든 것과 일치하고 전체 결과를 반환합니다. |
| + | 이전 표현식을 1회 이상 반복합니다. | 12+3은 “123”, “1223”, “12223”와 일치합니다. |
| ? | 이전 항목을 선택 사항으로 만듭니다. | ma?ke는 “make”, “mke”와 일치합니다. |
| ^ | 문자열의 시작 부분에서 일치합니다. | ^he는 “hello”, “hell”, “help”, “he is a boy”와 일치합니다. |
| $ | 문자열의 끝에서 일치합니다. | ed$는 “acted”, “bed”, “greed”와 일치합니다. |
| 범위 일치 | ||
| ( … ) | 문자 또는 표현식의 그룹화입니다. | (ak)는 “make”, “take”와 일치합니다. |
| { n } | 이전 항목과 정확히 n회 일치합니다. | 12{3}5는 “12225”와 일치합니다. |
| [ … ] | 괄호 안의 단일 문자와 일치합니다. | [abc]는 문자열 “abc”에서 “a”, “b” 또는 “c”와 일치합니다. |
| [^ … ] | 괄호 안에 정의된 문자를 제외한 모든 문자와 일치합니다. | a[^b]c는 “aec”, “acc”, “adc”와 일치하지만 “abc”와는 일치하지 않습니다. |
| 클래스 일치 (POSIX) | ||
| [:alpha:] | 영어 알파벳의 모든 문자를 찾고 일치시킵니다. | [[:alpha:]]ut는 “but”, “cut” 및 “rut”와 일치합니다. |
| [:alnum:] | 모든 문자와 숫자를 찾고 일치시킵니다. | [[:alnum:]]tack은 “stack”과 “5tack”과 일치합니다. |
| [:blank:] | 탭 또는 공백의 인스턴스를 찾고 일치시킵니다. | [[:blank:]]Hello는 ” Hello”와 일치합니다. |
| [:space:] | 모든 공백 문자를 검색하고 일치시킵니다. | [[:space:]]World는 ” World”와 일치합니다. |
| [:upper:] | 모든 대문자를 찾고 일치시킵니다. | [[:upper:]]+는 “HELLO”, “FAntastic” 및 “wORld”와 일치합니다. |
| [:lower:] | 모든 소문자를 찾고 일치시킵니다. | [[:lower:]]+는 “heLLO”, “FAntastic” 및 “world”와 일치합니다. |
| [:punct:] | 모든 구두점 문자를 검색하고 일치시킵니다. | \w+[[:punct:]]는 다음과 같은 단어와 일치합니다: “Hey!”, “Hi.” 및 “You?”. |
| [:cntrl:] | 모든 제어 문자를 찾고 일치시킵니다. | \w+[[:cntrl:]]$는 다음과 같은 단어와 일치합니다: “end^M”, “word^M” 및 “this^M”. |
| [.ng.] | “ng”의 이중 자음을 찾고 일치시킵니다. | bad[.zh.]는 단어 “badge”와 일치합니다. |
| [=n=] | “n”의 모든 발음 기호를 찾아 일치시킵니다. | [=a=]\w+는 “ànna”, “ápple” 및 “âble”와 일치합니다. |
| 클래스 일치 (Perl/Vim) | ||
| \B | 단어 경계가 아닌 모든 문자를 찾고 일치시킵니다. | \B+\b는 “hello ”에서 “o ”와 “ hi”에서 “h”와 일치합니다. |
| \w | 모든 문자와 숫자를 찾고 일치시킵니다. | \w{5}는 다음 조합의 문자와 숫자와 일치합니다: “world”, “12345” 및 “w0r1d”. |
| \W | 모든 기호를 검색하고 일치시킵니다. | \w{2}\W\b는 다음과 같은 단어와 일치합니다: “as.”, “ha!” 및 “me?”. |
| \d | 모든 숫자를 찾고 일치시킵니다. | \d{3}는 다음 숫자와 일치합니다: “111”, “777” 및 “888”. |
| \D | 숫자가 아닌 모든 문자를 찾고 일치시킵니다. | \D{3}는 다음 문자 및 기호와 일치합니다: “ant”, “ba!” 및 “!#*”. |
| \s | 모든 공백 문자를 찾고 일치시킵니다. | a\w+(i|y)sm\s는 다음과 같은 단어와 일치합니다: “altruism “, “albinism ” 및 “aneurysm “. | | \S | 모든 비공백 문자를 검색하고 일치시킵니다. | \S{5}는 다음과 같은 것과 일치합니다: “123hi”, “hi!^&” 및 “ | | \A | 단어의 시작을 찾고, 줄의 시작이 아니더라도 일치시킵니다. | \A{2}는 “Hello world”에서 “He”와 “wo”와 일치합니다. | | \Z | 단어의 끝을 찾고, 줄의 끝이 아니더라도 일치시킵니다. | \z{2}는 “Hello world”에서 “lo”와 “ld”와 일치합니다. | | 제어 문자 | | | | | | 파이프의 왼쪽 또는 오른쪽의 표현식과 일치합니다. | col(o|ou)r는 “color”, “colour”와 일치합니다. | | – | 일치시키기 위한 문자 범위를 지정합니다. 주로 [a-z], [A-Z], [1-9], [a-zA-Z1-9]에서 사용됩니다. | a[a-z]c는 “abc”, “acc”, “adc”와 일치합니다. | | \ | 특수 문자를 이스케이프하고 일반 문자로 변환합니다. | a\*c는 “ac”와 일치합니다. | | \n, \r, \t | 각각 줄 바꿈, 복귀 및 탭 문자와 일치합니다. | \w{5}\t\w{5}(\n|\r)는 “Hello World”와 일치합니다. | | \b…\b | 경계 내에서 단어와 일치합니다. | \bTech\b는 “Make Tech Easier”에서 “Tech”라는 단어와 일치합니다. | | *복잡한 표현식 | | | | [0-9]{3}-[0-9]{4} | 세 자리 및 네 자리 숫자 시퀀스를 찾고 일치시킵니다. | 이 표현식은 다음 숫자 조합과 일치합니다: “123-1234”, “111-1111” 및 “777-1234”. | | ([0-9]{3}-)?[0-9]{3}-[0-9]{4} | 두 개의 세 자리 숫자와 하나의 네 자리 숫자와 일치시킵니다. | 이 표현식은 다음 조합과 일치합니다: “123-123-1234”, “000-111-0001” 및 “777-5678”. | | .{1,3} | 길이가 1에서 3인 단어를 찾습니다. | 이 표현식은 다음 단어와 일치합니다: “at”, “it” 및 “can”. | | ([A-Z])\w+ | 대문자로 시작하는 모든 단어와 일치합니다. | 이 표현식은 다음 단어와 일치합니다: “Hello”, “World” 및 “Hey”. | | e[([:digit:]|[:alnum:])]c | “e”와 “c” 사이의 모든 영숫자 문자와 일치합니다. | 이 표현식은 다음 조합과 일치합니다: “e1c”, “e5c” 및 “e7c”. | | [^0-9[:upper:]]+ | 숫자로 시작하지 않는 모든 완전 대문자 단어를 찾습니다. | 이 표현식은 다음 단어와 일치합니다: “HELLO”, “WORLD” 및 “HEY”. | | “.+” | 따옴표로 묶인 단어를 찾고 일치시킵니다. | 이 표현식은 다음 인용을 일치시킵니다: “Hello, world!”. |
이미지 출처: Unsplash