정규 표현식에 대한 초보자 가이드

Intro To Regex Featured

텍스트에서 반복되는 패턴을 찾으려고 시도해 본 적이 있나요? 브라우저나 워드 프로세서의 검색 기능과 같은 것을 사용했을 수도 있지만, 더 복잡한 것을 찾아야 할 때는 비유적으로 바늘을 찾는 것처럼 어려울 수 있습니다.

다행히도, 문자의 정확한 패턴을 텍스트에서 선택할 수 있는 방법이 있습니다. 이를 정규 표현식(정규식, RegEx)이라고 하며, 텍스트 검색의 달인이 될 수 있도록 해줍니다.

추가 읽기: 정규 표현식을 사용하여 일상 업무의 생산성을 향상시키는 방법

RegEx는 어디에 사용할 수 있나요?

유닉스와 리눅스가 정규 표현식을 널리 알렸지만, 정규 표현식은 마이크로소프트 워드를 포함한 다양한 패키지에서 사용할 수 있습니다.

regular-expressions

정규 표현식은 주목할만한 여러 리눅스 프로그램, 즉 grep, AwkSed에서 주로 사용됩니다.

예를 들어, PC에서 USB 장치를 확인하고 싶다고 가정해 보겠습니다. lspci를 사용하면 모든 장치 목록이 표시되며, USB 항목을 따로 찾아야 합니다. 대신 다음 명령어를 사용하여 USB 장치만 표시할 수 있습니다:

lspci|grep"USB"

이는 RegEx가 작동하는 가장 간단한 예입니다. 터미널에서 정규 표현식을 사용하는 가장 인기 있는 방법이지만, 유일한 방법은 아닙니다. 오늘날 텍스트 편집기부터 파일 관리자까지 다양한 소프트웨어에서 RegEx 지원을 찾을 수 있습니다.

패턴 찾기

터미널에서 파일이나 폴더를 선택할 때 와일드카드 역할을 하는 * 문자 사용해 본 적이 있을 것입니다. 예를 들어, 폴더 내의 모든 JPG 파일을 나열하려면 다음과 같이 사용할 수 있습니다:

ls*.jpg

위와 동일한 RegEx는 다음과 같습니다:

ls|grep-E"\.jpg"

Intro To Regex Filter Jpgs

jpg와 png 파일 모두 검색하려면, 다음과 같이 사용합니다:

ls|grep-E"(\.jpg|\.png)"

범위

패턴 대신 특정 문자 범위를 검색하려면, 괄호로 정의하면 됩니다. 예를 들어, [a-z]를 패턴으로 사용하면, 알파벳의 모든 소문자로 구성된 문자열과 일치합니다.

추측했을지도 모르겠지만, [A-Z]는 대문자만 선택합니다. 대문자와 소문자를 모두 포함하는 모든 문자 범위를 선택하려면 표현식을 [a-zA-Z]로 변경하면 됩니다.

패턴의 특정 인스턴스 수를 찾으려면 중괄호로 명시할 수 있습니다. {5}는 패턴의 다섯 번의 발생을 반환합니다. 숫자 범위도 사용할 수 있어, {5,10}은 5에서 10개의 인스턴스를 보여줍니다.

메타 문자

정규 표현식에서는 메타문자라는 두 문자로 문자열의 일부를 검색할 수도 있습니다. 이는 셸에서 사용했던 와일드카드와 유사합니다.

주요 메타 문자는 간단한 점으로, 이는 다른 단일 문자를 나타냅니다. 예를 들어, c.ll 패턴을 사용하면 “cell”뿐만 아니라 “cull”과 “call”도 일치합니다.

점 뒤에 별표를 입력하면 무한한 수의 문자와 일치시키는 데 사용할 수 있습니다. 예를 들어 .*board는 “keyboard”와 “skateboard” 모두와 일치합니다. “key”와 “skate”의 문자 수가 다르더라도 말이죠.

이스케이프

우리의 예제에서 서로 다른 유형의 이미지 파일을 선택할 때, 마침표 전에 백슬래시를 사용했다는 점을 눈치 챘을 것입니다(“ .jpg “). 이는 RegEx에서 특수 문자를 이스케이프하는 방법입니다.

이를 사용하지 않으면, 우리의 패턴은 파일의 확장자(“ .jpg “ 및 “ .png “)만 일치하는 것이 아니라 “ajpg” 및 “opng”와도 일치하게 됩니다. 기억하세요, .는 문자의 모든 값과 일치하는 와일드카드입니다.

앵커와 경계

앵커와 경계는 당신이 찾고 있는 것을 더 정확하게 정의할 수 있게 해줍니다.

앞이나 뒤에 다른 문자가 붙어 있지 않은 개별 단어 “computer”만 찾으려면 패턴을 \로 정의해야 합니다.

라인의 시작이나 끝에 나타나는 패턴을 특별히 검색할 수도 있습니다. 이는 각각 ^$ 문자를 통해 이루어집니다.

따라서 “computer”라는 단어가 라인의 시작에 나타나는 항목만 찾고 싶다면, 패턴은 ^computer처럼 보일 것입니다. 반대로, 줄의 끝에 있을 경우에는 패턴이 computer$로 변경됩니다.

이것이 RegEx의 간단한 규칙으로, 이를 혼합하여 찾고자 하는 패턴을 정확하게 찾을 수 있습니다. 문자 범위를 줄의 시작에서 찾거나 끝에서 교차 단어, 특정 날짜 또는 연도 범위를 단일 문자열로 검색할 수 있습니다.

정규 표현식을 마스터하기 위해 우리 정규 표현식 치트시트를 확인하는 것을 잊지 마세요.