Python을 사용한 정규 표현식 초보자 안내서

Python을 사용한 정규 표현식 초보자 안내서

프로그래머라면 정규식(regex)이 무엇인지 이미 알고 있을 것입니다. 정규식 패턴은 거의 모든 주류 프로그래밍 언어에서 구현되었지만 여전히 대부분의 개발자는 이러한 패턴의 기능과 다양성을 인식하지 못합니다.





이 가이드는 정규 표현식과 Python 프로그래밍 언어에서 정규 표현식을 사용하는 방법에 관한 것입니다.





정규 표현식이란 무엇입니까?

정규식은 사용자가 텍스트 파일 및 문자열의 문자 조합을 일치시키는 데 도움이 되는 패턴입니다. 정규식을 사용하여 명령 또는 문서의 출력에서 ​​특정 패턴을 필터링하거나 찾을 수 있습니다.





정규 표현식의 다양한 사용 사례가 있으며 가장 유명한 것은 리눅스의 grep 명령어 . 다른 애플리케이션에는 데이터 덤프에서 이메일 주소 및 전화번호 추출과 같은 정보 필터링이 포함됩니다.

많은 개발자가 정규식에서 벗어나는 주된 이유는 패턴 일치의 힘에 대한 인식 부족입니다. 일부는 패턴에 사용된 문자와 시퀀스의 양이 많기 때문에 정규식을 혼동하기까지 합니다.



이유가 무엇이든 정규식은 모든 사람이 알아야 하는 프로그래밍의 가장 중요한 측면 중 하나이며 앞으로도 그럴 것입니다.

모바일 핫스팟은 어떻게 작동합니까

정규식: 문자 및 시퀀스 일치

Regex는 그 자체로 완전히 새로운 언어입니다. 정규식 엔진은 특정 의미를 지닌 여러 문자로 구성된 패턴을 해석합니다. 영숫자 문자와 같은 기본 리터럴은 자체적으로 일치합니다. 그러나 $, *, +, { 등과 같은 복잡한 문자는 고차 일치에 도움이 됩니다.





  1. 별표(*): 앞의 문자를 0번 이상 찾습니다. 문자의 문자적 의미는 '요소에 n번 곱한 값'입니다. 예를 들어 정규식이 다음과 같은 경우 알파벳 * , 일치하는 문자열은 ab, abc, abcc, abccc, abcccc 등입니다. 표현식 [기원전]* bc, bcbc, bcbc 등과 일치합니다.
  2. 더 보기(+): 선행 문자를 한 번 이상 찾습니다. 의 작업 + 성격이 비슷하다 * , 하지만 + 문자가 발생하지 않으면 문자가 패턴을 생략합니다. 예를 들어, 알파벳 + abc, abccc, abccc 등과 일치하지만 ab는 일치하지 않습니다.
  3. 물음표 (?): 앞의 문자를 0번 또는 1번 찾습니다. 예를 들어, 패턴 알파벳? ab 및 abc만 일치합니다.
  4. 파이프(|): 바이너리로 사용 또는 운영자. 파이프 앞뒤의 문자 중 하나와 일치합니다. 예를 들어, ㄱ|ㄴ 또는 b와 일치합니다.
  5. 점(.): 신원을 알 수 없는 문자와 일치합니다. 예를 들어, 교류 aac, abc, acc, a2c 등과 일치합니다.
  6. 당근(^): 패턴의 첫 번째 문자와 일치합니다. 예를 들어, ^라 로 시작하는 단어와 일치합니다. 토끼, 너구리 및 무작위와 같은.
  7. 달러($): 패턴의 마지막 문자와 일치합니다. 예를 들어, $ 로 끝나는 단어와 일치합니다. NS Van, Dan 및 Plan과 같은.
  8. 하이픈(-): 문자 범위를 정의하는 데 사용됩니다. 예를 들어, [0-9] 모든 한 자리 숫자와 일치합니다.

정규식 패턴에 사용되는 특수 시퀀스는 다음과 같습니다.

  1. 에게: 문자열의 시작 부분에 후속 문자가 있는 경우 일치 항목을 반환합니다. 예를 들어, A더 로 시작하는 단어와 일치합니다. NS 예를 들어, 그들, 그들, 등등.
  2. NS: 문자가 단어의 시작이나 끝에 있으면 일치 항목을 반환합니다. 예를 들어, bmad 그리고 미친 다음과 같은 단어와 일치합니다. 만들어진 그리고 유목민 각기.
  3. NS: 단어의 시작이나 끝에 문자가 없으면 일치 항목을 반환합니다.
  4. NS: 문자열에 있는 숫자와 일치합니다. 예를 들어, /NS* 1, 12, 1232 등과 같은 숫자와 일치합니다.
  5. NS: 문자열에서 숫자가 아닌 문자를 찾습니다. /NS b, c, f 등과 일치합니다.
  6. NS: 텍스트의 공백 문자와 일치합니다.
  7. NS: 텍스트에서 공백이 아닌 문자를 찾습니다.
  8. 에: 문자열에 밑줄을 포함한 영숫자 문자가 포함된 경우 일치 항목을 반환합니다. 예를 들어, b, c, d, 1, 2, 3 등과 일치합니다.
  9. 에: 문자열에 영숫자 또는 밑줄이 포함되지 않은 경우 일치 항목을 반환합니다.
  10. 와 함께: 문자열 끝에 있는 문자와 일치합니다. 예를 들어, 끝 로 끝나는 단어와 일치합니다. 구부리기, 고치기, 경향 등

정규 표현식을 위한 Python 메서드

파이썬에서는 답장 라이브러리는 프로그램에서 정규식을 구현하는 데 필요한 모든 기능과 유틸리티를 제공합니다. Python 인터프리터와 함께 사전 설치되어 제공되므로 pip를 사용하여 라이브러리를 다운로드할 필요가 없습니다.





가져오려면 답장 Python의 라이브러리에서 스크립트에 다음 코드를 추가합니다.

import re

Python에서 정규 표현식을 전달할 때 다음과 같은 특수 문자를 해석하지 않는 원시 문자열을 사용합니다. N 그리고 NS 다르게.

성냥()

NS 다시 일치() Python의 메서드는 프로그램이 지정된 문자열의 시작 부분에서 일치하는 항목을 찾으면 정규식 개체를 반환합니다. 이 함수는 두 가지 기본 인수를 취합니다.

re.match(pattern, string)

...어디 무늬 정규 표현식이고 검색해야 하는 텍스트입니다.

아래 코드 스니펫을 살펴보세요.

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

NS NS 문자열 앞의 문자는 원시 문자열을 나타냅니다.

산출:

None

앞서 언급한 코드는 다음을 반환합니다. 없음 왜냐하면 단어 문자열의 시작 부분에 존재하지 않았습니다.

일치하는 항목이 발견되면 다음을 사용하여 일치 항목을 인쇄할 수 있습니다. 그룹() regex 객체에 속하는 메소드.

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

산출:

Word

NS 연구 () 메소드는 re.match()와 유사한 인수를 취합니다. match()는 문자열의 시작 부분에 있는 일치 항목만 반환하지만, 검색() 문자열의 모든 인덱스에서 찾은 일치 항목을 반환합니다.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

참고로 성냥() 그리고 검색() 메서드는 하나의 패턴 일치만 반환합니다. 위에서 언급한 코드에서, 단어 두 번 나타납니다. 하지만 검색() 함수는 단어의 첫 번째 항목과만 일치합니다.

Word

모두 찾기()

이미 짐작할 수 있듯이, findall() 메서드는 문자열에서 가능한 모든 일치 항목을 반환합니다.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

정규식 객체를 반환하는 대신 findall() 함수는 모든 일치 항목의 목록을 반환합니다. 다음을 사용하여 목록을 반복할 수 있습니다. 파이썬의 for 루프 .

나뉘다()

패턴을 구분 기호로 사용하여 문자열을 하위 문자열로 분할하려는 경우 나뉘다() 필요한 기능입니다.

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

산출:

['This word', 'that', 'this are different.']

보결()

NS 보결() 이 방법을 사용하면 사용자가 패턴 대신 특정 단어를 대체할 수 있습니다. 다음 인수를 취합니다.

re.sub(pattern, replacement, string)

다음 코드 조각을 고려하십시오.

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

산출:

Dave or Harry must be punished.

엮다()

NS 재컴파일() 방법 답장 라이브러리를 사용하면 사용자가 메모리에 정규식 패턴의 컴파일된 버전을 저장할 수 있습니다. 그런 다음 컴파일된 개체를 사용하여 일치하는 패턴에 대해 지정된 텍스트 덤프를 빠르게 필터링할 수 있습니다.

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

이 기능은 주로 리소스 집약적이며 실행에 많은 시간이 필요한 패턴을 저장하는 데 사용됩니다. 패턴을 미리 컴파일하고 객체로 저장하면 이 문제가 해결됩니다.

Python으로 정규식의 힘 활용

텍스트 파일 및 출력으로 작업할 때 정규식은 마음대로 사용할 수 있는 훌륭한 도구입니다. 문서의 특정 패턴을 필터링하거나 대체하는 일부 코드를 빠르게 작성할 수 있습니다.

정규식을 막 시작하는 경우 모든 문자와 일치하는 시퀀스를 기억하는 것이 어려울 수 있습니다. 정규식을 더 잘하려면 문자, 메서드 및 시퀀스 목록을 가끔씩 참조하는 것이 장기적으로 확실히 도움이 될 것입니다.

공유하다 공유하다 트위터 이메일 초보 프로그래머를 위한 Python RegEx 치트 시트

이 다재다능한 프로그래밍 언어를 더 잘 사용할 수 있도록 이 Python 정규식 목록을 사용하십시오.

다음 읽기
관련 항목
  • 프로그램 작성
  • 프로그램 작성
  • 파이썬
저자 소개 디페쉬 샤르마(79개 기사 게재)

Deepesh는 MUO의 Linux용 주니어 편집자입니다. 그는 모든 신규 이민자에게 행복한 경험을 제공하는 것을 목표로 Linux에 대한 정보 가이드를 작성합니다. 영화에 대해서는 잘 모르지만 기술에 대해 이야기하고 싶다면 그는 당신의 남자입니다. 여가 시간에는 책을 읽거나 다양한 음악 장르를 듣거나 기타를 연주하는 그를 볼 수 있습니다.

Deepesh Sharma가 참여한 작품 더보기

뉴스레터 구독

뉴스레터에 가입하여 기술 팁, 리뷰, 무료 전자책 및 독점 거래를 확인하십시오!

구독하려면 여기를 클릭하세요.