백엔드 개발 파이썬 튜토리얼 Python의 정규식에 대한 지식 요약 및 공유

Python의 정규식에 대한 지식 요약 및 공유

Sep 23, 2017 am 11:34 AM
python 요약 표현

이 글에서는 Python 정규식에 대한 기본 지식을 소개합니다. 이 글의 내용에는 효율적인 정규식을 작성하는 방법과 정규식을 최적화하는 방법이 포함되어 있지 않습니다. 이러한 주제에 대한 다른 튜토리얼을 확인하세요.

1. 정규식 구문

 1.1 문자 및 문자 클래스
 1 특수 문자: .^$?+*{}[]()|
  리터럴 값을 사용하려면 위의 특수 문자를 이스케이프해야 합니다.
  2 문자 클래스
   1. [] 안에 포함된 하나 이상의 문자를 문자 클래스라고 합니다. 문자 클래스가 일치 시 수량자를 지정하지 않으면 그 중 하나만 일치합니다.
   2. 문자 클래스 내에서 범위를 지정할 수 있습니다. 예를 들어 [a-zA-Z0-9]는 a~z, A~Z, 0~9의 모든 문자를 나타냅니다.
   3. 왼쪽 대괄호 뒤에는 ^([^0-9]와 같은 문자 클래스를 부정한다는 것은 숫자가 아닌 모든 문자와 일치할 수 있음을 의미합니다.)
4. 문자 클래스 내에서 를 제외한 다른 특수 문자는 더 이상 특별한 의미를 가지지 않으며 모두 리터럴 값을 나타냅니다. 첫 번째 위치에 배치된 ^는 부정을 나타내고, 다른 위치에 배치된 ^ 자체는 ^ 자체를 나타내며, 중간에 배치된 -는 범위를 나타내고, 문자 클래스의 첫 번째 문자로 배치된 것은 - 자체를 나타냅니다.

   5. d s w
  3 단축 방법
  과 같이 문자 클래스 내에서 단축 방법을 사용할 수 있습니다. re.DOTALL 플래그가 있으면 개행 문자를 제외한 모든 문자와 일치합니다. 문자
   d는 유니코드 숫자와 일치합니다. re.ASCII가 포함된 경우 0-9와 일치합니다.
   D는 숫자가 아닌 유니코드와 일치합니다.
 s는 유니코드 공백과 일치하고 re.ASCII가 포함된 경우 tnrfv의 1과 일치합니다
  S는 유니코드 비-와 일치합니다 공백
 w는 유니코드 단어 문자와 일치하고, re.ascii가 포함된 경우 [a-zA-Z0-9_] 중 하나와 일치합니다.
   W는 유니코드 비모나드 문자

 1.2 수량자
 1과 일치합니다. ? 1번
  2. * 일치 이전 문자가 0번 이상 일치합니다
3. + 이전 문자와 1번 이상 일치합니다.
4. {m}은 이전 표현식과 m번 일치합니다.
5. {m,}는 이전 문자와 일치합니다. 표현식은 최소 m번 이상
6. {,n}은 이전 정규 표현식과 최대 n번 일치합니다
  7. {m,n}은 이전 정규 표현식과 최소 m번, 최대 n번 일치합니다
   참고:
   위 수량자 욕심이 없는 모드로 변경하려면 ? 1.3 그룹 및 캡처

1 ()의 역할:

1. 캡처 추가 처리를 위해 ()에 있는 정규 표현식의 내용을 다음과 같이 하면 이 괄호의 캡처 기능을 끌 수 있습니다. ?: 왼쪽 괄호 뒤
   2. 정규 표현식의 일부를 결합하여 수량자 또는 |
  2 반응은 다음을 참조합니다. 이전 ()에 캡처 된 내용 :
1. 그룹 번호를 통한 후면 참조
| 왼쪽에 캡처 한 컨텐츠가 캡처 된 컨텐츠가 왼쪽을 따를 수 있습니다. 괄호를 ?P으로 묶고, 꺾쇠괄호 안에 그룹 이름을 넣은 다음 (?P=name)으로 참조합니다. 앞서 캡처한 내용입니다. (?Pw+)s+(?P=word)와 같이 반복되는 단어를 일치시킵니다.
3 참고:
역참조는 문자 클래스 []에서 사용할 수 없습니다.

  1.4 Assertions and Markers
   Assertions은 어떤 텍스트와도 일치하지 않지만 Assertion이 위치한 텍스트에만 특정 제약 조건을 적용합니다.
  1 일반적으로 사용되는 Assertions:
  1. b는 단어의 경계와 일치하며 문자 클래스에 배치됩니다. []는 백스페이스를 나타냅니다.
   2. B는 ASCII 태그의 영향을 받는 비단어 경계와 일치합니다
  3. A는 처음에 일치합니다
  4. ^는 처음에 일치하며, MULTILINE 플래그가 있는 경우 각 개행 문자 뒤에 일치합니다
5. Z는 끝에서 일치합니다
   6. $는 끝에서 일치합니다. MULTILINE 플래그가 있으면 각 개행 앞에 일치합니다.
   7. (?=e) 긍정적 예측
   8. (?!e) 부정적 예측
   9 .(?<= e) 긍정적인 룩백
   10.(?  2 룩백에 대한 설명
                               voy : exp1(?=exp2   )                                     ulateleg 관찰(? exp1 이전의 내용은 exp2와 일치할 수 없습니다

그러나 hello 뒤에는 world가 와야 합니다. 정규식은 "hello wangxing" 및 "hello world"와 일치하는 데 사용되는 "(hello)s+(?=world)"와 같이 작성할 수 있습니다. 후자의 hello

 1.5 조건 일치

   (?(id)yes_exp|no_exp): id에 해당하는 하위 표현식이 내용과 일치하면 yes_exp와 일치하고, 그렇지 않으면 no_exp


 1.6 정규식 플래그

 1과 일치합니다. 정규식 플래그에는 두 가지 종류가 있습니다. 사용 방법

1. 플래그 매개변수를 컴파일 메소드에 전달하여 re.compile(r"#[da-f]{6과 같이 여러 플래그에 대해 | 분할 메소드를 사용합니다. }b", re.IGNORECASE|re.MULTILINE)
   2. (?ms)#[da-z]{6}와 같이 정규식 앞에 (?flag)를 추가하여 정규식에 플래그를 추가합니다. b
  2. 일반적으로 사용되는 플래그
  re.A 또는 re .ASCII이므로 b B s S w W d D는 모두 문자열이 다음과 같다고 가정합니다. 문자열이 ASCII라고 가정
    re.I 또는 re.IGNORECASE가 정규식을 만듭니다. 대소문자 무시
   re.M 또는 re.MULTILINE 여러 줄 일치. 각 ^는 각 캐리지 리턴 뒤에 일치하고 각 $는 각 캐리지 리턴 앞에서 일치합니다.
   re.S 또는 re.DOTALL을 사용하면 캐리지를 포함한 모든 문자와 일치할 수 있습니다. return
   re.X 또는 re.VERBOSE 정규 표현식에 사용할 수 있습니다. 표현식은 여러 줄에 걸쳐 있으며 주석도 추가할 수 있지만 기본 공백은 더 이상 해석되지 않으므로 공백은 s 또는 [ ]로 표시해야 합니다. 예:
    re.compile(r"""
        [^>]*? # src의 속성이 아님
    src= #src 속성의 시작
    ( ?:
     (?P["']) #왼쪽따옴표
   (?P[^1>]+?) #사진 이름
       (?P=quote) #          ",re.VERBOSE| re.IGNORECASE)


2. Python 정규식 모듈

2.1 정규식에는 문자열 처리를 위한 네 가지 주요 기능이 있습니다.

1. 문자열이 정규식의 구문을 준수하는지 확인하며 일반적으로 true를 반환합니다. or false
  2. 정규식을 얻어서 문자열에서 요구사항에 맞는 텍스트를 추출합니다

  3. 검색 문자열에서 정규식에 맞는 텍스트를 바꾸고 해당 문자열로 바꿉니다

  4. 정규식을 사용하여 문자열을 분할합니다


  2.2 Python의 re 모듈에서 정규식을 사용하는 두 가지 방법

   1. re.compile(r, f) 메소드를 사용하여 정규식 객체를 생성한 후 해당 메소드를 호출합니다. 정규식 개체를 생성한 후 여러 번 사용할 수 있다는 장점이 있습니다. 2. re 모듈에는 정규식 개체의 각 개체 메서드에 해당하는 모듈 메서드가 있습니다. 2.3 정규식 개체의 일반적인 방법은 정규식 문자열입니다.

  1. rx.findall(s,start, end):
   목록을 반환합니다. 정규식에 그룹화가 없으면 목록에 일치하는 모든 내용이 포함됩니다.
   정규식에 그룹화가 있으면 목록은 각각입니다. of 요소는 하위 그룹에서 일치하는 내용을 포함하는 튜플이지만 전체 정규 표현식과 일치하는 내용을 반환하지 않습니다
  2. rx.finditer(s, start, end):
   반복 가능한 객체를 반환합니다
  반복 가능한 객체를 생성하고 매번 일치하는 객체를 반환합니다. 일치하는 객체의 group() 메서드를 호출하여 지정된 그룹과 일치하는 콘텐츠를 볼 수 있습니다. 0은 전체 정규 표현식과 일치하는 콘텐츠를 나타냅니다.
   3. rx.search( s , start, end):
     일치하는 개체를 반환합니다. 일치하는 항목이 없으면 None을 반환합니다.
    검색 방법은 한 번만 일치하고 중지되며 나중에는 계속 일치하지 않습니다.
   4. rx.match(s, start, end):
   정규식이 문자열의 시작 부분과 일치하면 일치하는 객체가 반환되고, 그렇지 않으면 None
  5.rx.sub(x, s, m):
    문자열을 반환합니다. 일치하는 각 위치를 x로 바꾸고 대체된 문자열을 반환합니다. m을 지정하면 최대 m번 대체됩니다. x의 경우 /i 또는 /g id를 사용할 수 있으며 캡처된 콘텐츠를 참조하는 그룹 이름 또는 번호일 수 있습니다.
   x 모듈 메소드 re.sub(r, x, s, m)에서 함수를 사용할 수 있습니다. 이때 캡처된 콘텐츠를 이 함수를 통해 푸시하여 처리한 다음 일치하는 텍스트를 바꿀 수 있습니다.
  6. rx.subn(x, s, m):
    re.sub() 메서드와 동일하지만 차이점은 튜플을 반환한다는 것인데, 그 중 하나는 결과 문자열이고, 하나는 튜플의 개수입니다. 교체.
7. rx.split(s, m): 문자열 분할
                                                         you in in in intale 목록의 각 두 분할 중간은 목록의 일부로 사용됩니다. 예:
   rx = re.compile(r "(d)[a-z]+(d)")
   s = "ab12dk3klj8jk9jks5"
   결과 = rx.split(s)
    반환 ['ab1', '2', '3', 'klj', '8' , '9', 'jks5']
   8. rx.flags(): 정규식 컴파일 시 설정되는 플래그
  9. rx.pattern(): 정규식 컴파일 시 사용되는 문자열


 2.4 일치하는 객체의 속성 및 방법


 01.m.group(g, ...)

   반환 번호 또는 그룹 이름 일치 가져오는 내용, 기본값 또는 0은 전체 표현식과 일치하는 내용을 나타냅니다. 여러 개를 지정하면 튜플이 반환됩니다. 02. m.groupdict(기본값) 사전을 반환합니다. 사전의 키는 명명된 모든 그룹의 그룹 이름이고, 값은 명명된 그룹이 캡처한 내용입니다. 기본 매개변수가 있는 경우 해당 그룹에 참여하지 않는 그룹의 기본값으로 사용됩니다. 어울리는.

  03.m.groups(기본값)
   튜플을 반환합니다. 1부터 시작하여 콘텐츠를 캡처하는 모든 하위 그룹을 포함합니다. 기본값을 지정하면 이 값은 콘텐츠를 캡처하지 않는 그룹의 값으로 사용됩니다
  04.m.lastgroup()
   가장 높은 숫자를 가진 캡처 그룹 콘텐츠와 일치하는 이름, 이름이 없거나 사용된 이름이 없으면 None을 반환합니다(일반적으로 사용되지 않음)
  05.m.lastindex()
  콘텐츠와 일치하는 가장 높은 번호의 캡처 그룹 번호, 그렇지 않은 경우, 없음을 반환합니다.
  06.m.start(g):
   현재 일치하는 개체의 하위 그룹은 문자열의 해당 위치에서 일치됩니다. 현재 그룹이 일치에 참여하지 않으면 -1이 반환됩니다
  07.m.end( g)
    현재 일치 객체의 하위 그룹화는 문자열의 해당 위치에서 종료됩니다. 현재 그룹이 일치에 참여하지 않으면 -1이 반환됩니다. 08. m.span()
   내용이 m인 튜플을 반환합니다. start(g) 및 m.end(g)의 반환 값
  09.m.re()
  이 일치 개체를 생성하는 정규 표현식
  10.m.string()
  일치 또는 일치 검색을 위해 전달된 문자열
 11.m.pos()
    검색 시작 위치입니다. 즉, 문자열의 시작 또는 start로 지정한 위치(일반적으로 사용되지 않음)
  12.m.endpos()
   검색의 끝 위치입니다. 즉, 문자열의 끝 위치, 또는 end로 지정되는 위치(일반적으로 사용되지 않음)


  2.5 요약

  1. 정규식 일치 함수의 경우 Python에는 true와 false를 반환하는 메서드가 없지만 일치 또는 검색 메서드의 반환 값이 None인지 여부로 판단할 수 있습니다
  2. 정규식 검색 함수의 경우, 한 번만 검색하는 경우 검색 또는 일치 메서드에서 반환된 일치 개체를 사용하여 얻을 수 있습니다. 여러 번 검색하는 경우 반복 액세스를 위해 finditer 메서드에서 반환된 반복 가능한 개체를 사용할 수 있습니다. 3. 정규식 대체 함수의 경우. , 정규식 객체의 sub 또는 subn을 사용할 수도 있고, re 모듈 메소드 sub 또는 subn을 통해 구현할 수도 있습니다. 차이점은 모듈의 sub 메소드의 대체 텍스트를 함수를 사용하여 생성할 수 있다는 것입니다.
4. 정규식 분할 기능의 경우 정규식 개체 분할 방법을 사용할 수 있습니다. 정규식 개체를 그룹화하면 그룹에서 캡처한 콘텐츠도 반환 목록에 배치됩니다

위 내용은 Python의 정규식에 대한 지식 요약 및 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 및 Python : 코드 예제 및 비교 PHP 및 Python : 코드 예제 및 비교 Apr 15, 2025 am 12:07 AM

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스 Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스 Apr 15, 2025 am 12:16 AM

Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

Docker 원리에 대한 자세한 설명 Docker 원리에 대한 자세한 설명 Apr 14, 2025 pm 11:57 PM

Docker는 Linux 커널 기능을 사용하여 효율적이고 고립 된 응용 프로그램 실행 환경을 제공합니다. 작동 원리는 다음과 같습니다. 1. 거울은 읽기 전용 템플릿으로 사용되며, 여기에는 응용 프로그램을 실행하는 데 필요한 모든 것을 포함합니다. 2. Union 파일 시스템 (Unionfs)은 여러 파일 시스템을 스택하고 차이점 만 저장하고 공간을 절약하고 속도를 높입니다. 3. 데몬은 거울과 컨테이너를 관리하고 클라이언트는 상호 작용을 위해 사용합니다. 4. 네임 스페이스 및 CGroup은 컨테이너 격리 및 자원 제한을 구현합니다. 5. 다중 네트워크 모드는 컨테이너 상호 연결을 지원합니다. 이러한 핵심 개념을 이해 함으로써만 Docker를 더 잘 활용할 수 있습니다.

터미널 VSCODE에서 프로그램을 실행하는 방법 터미널 VSCODE에서 프로그램을 실행하는 방법 Apr 15, 2025 pm 06:42 PM

vs 코드에서는 다음 단계를 통해 터미널에서 프로그램을 실행할 수 있습니다. 코드를 준비하고 통합 터미널을 열어 코드 디렉토리가 터미널 작업 디렉토리와 일치하는지 확인하십시오. 프로그래밍 언어 (예 : Python의 Python Your_file_name.py)에 따라 실행 명령을 선택하여 성공적으로 실행되는지 여부를 확인하고 오류를 해결하십시오. 디버거를 사용하여 디버깅 효율을 향상시킵니다.

파이썬 : 자동화, 스크립팅 및 작업 관리 파이썬 : 자동화, 스크립팅 및 작업 관리 Apr 16, 2025 am 12:14 AM

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

VScode 란 무엇입니까? VScode 란 무엇입니까? Apr 15, 2025 pm 06:45 PM

VS Code는 Full Name Visual Studio Code로, Microsoft가 개발 한 무료 및 오픈 소스 크로스 플랫폼 코드 편집기 및 개발 환경입니다. 광범위한 프로그래밍 언어를 지원하고 구문 강조 표시, 코드 자동 완료, 코드 스 니펫 및 스마트 프롬프트를 제공하여 개발 효율성을 향상시킵니다. 풍부한 확장 생태계를 통해 사용자는 디버거, 코드 서식 도구 및 GIT 통합과 같은 특정 요구 및 언어에 확장을 추가 할 수 있습니다. VS 코드에는 코드에서 버그를 신속하게 찾아서 해결하는 데 도움이되는 직관적 인 디버거도 포함되어 있습니다.

VScode 확장자가 악의적입니까? VScode 확장자가 악의적입니까? Apr 15, 2025 pm 07:57 PM

VS 코드 확장은 악의적 인 코드 숨기기, 취약성 악용 및 합법적 인 확장으로 자위하는 등 악성 위험을 초래합니다. 악의적 인 확장을 식별하는 방법에는 게시자 확인, 주석 읽기, 코드 확인 및주의해서 설치가 포함됩니다. 보안 조치에는 보안 인식, 좋은 습관, 정기적 인 업데이트 및 바이러스 백신 소프트웨어도 포함됩니다.

Centos에 nginx를 설치하는 방법 Centos에 nginx를 설치하는 방법 Apr 14, 2025 pm 08:06 PM

Centos Nginx를 설치하려면 다음 단계를 수행해야합니다. 개발 도구, PCRE-DEVEL 및 OPENSSL-DEVEL과 같은 종속성 설치. nginx 소스 코드 패키지를 다운로드하고 압축을 풀고 컴파일하고 설치하고 설치 경로를/usr/local/nginx로 지정하십시오. nginx 사용자 및 사용자 그룹을 만들고 권한을 설정하십시오. 구성 파일 nginx.conf를 수정하고 청취 포트 및 도메인 이름/IP 주소를 구성하십시오. Nginx 서비스를 시작하십시오. 종속성 문제, 포트 충돌 및 구성 파일 오류와 같은 일반적인 오류는주의를 기울여야합니다. 캐시를 켜고 작업자 프로세스 수 조정과 같은 특정 상황에 따라 성능 최적화를 조정해야합니다.

See all articles