Computer >> 컴퓨터 >  >> 체계 >> Linux

정규 표현식에 대한 초보자 안내서

정규 표현식에 대한 초보자 안내서

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

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

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

Unix와 Linux가 널리 보급되었지만 정규식은 Microsoft Word를 비롯한 다양한 패키지에서 사용할 수 있습니다.

정규 표현식에 대한 초보자 안내서

정규식은 grep를 포함하여 몇몇 주목할만한 Linux 프로그램에서 가장 두드러지게 사용됩니다. , AwkSed .

예를 들어, PC에서 USB 장치를 확인하고 싶을 수 있습니다. lspci 사용 , 모든 장치 목록이 표시되며 USB 항목을 직접 찾아야 합니다. 대신 다음을 사용하여 USB 장치만 표시할 수 있습니다.

lspci | grep "USB"

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

패턴 찾기

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

ls *.jpg

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

ls | grep -E "\.jpg"
정규 표현식에 대한 초보자 안내서

jpg 및 png 파일을 모두 검색하려면 다음을 사용하십시오.

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

범위

패턴 대신 특정 범위의 문자를 검색하려면 대괄호로 정의하여 검색할 수 있습니다. 예를 들어 [a-z]를 사용하는 경우 패턴으로 이것은 알파벳의 소문자로 구성된 모든 문자열과 일치합니다.

짐작하셨겠지만 [A-Z] 대문자만 선택합니다. 대문자와 소문자 모두에서 문자 범위를 선택하려면 표현식이 [a-zA-Z]로 변경됩니다. .

패턴의 특정 인스턴스 수를 찾으려면 중괄호로 표시할 수 있습니다. {5} 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와 같을 것입니다. . 반대로 줄 끝에 있으면 패턴이 computer$로 변경됩니다. .

이것들은 RegEx의 간단한 규칙이며, 원하는 패턴을 정확하게 찾기 위해 혼합할 수도 있습니다. 단일 텍스트 문자열을 사용하여 줄 시작 부분의 문자 범위 또는 끝 부분의 대체 단어, 특정 날짜 또는 연도 범위를 검색할 수 있습니다.

정규식을 마스터하려면 정규식 치트시트를 확인하는 것을 잊지 마십시오.