정규 표현 식 re 모듈 깊이 분석(부분)

정규 표현 식:
공식 정의:정규 표현 식 은 문자열 작업 에 대한 논리 적 공식 으로 미리 정 의 된 특정한 문자 와 이 특정한 문자 의 조합 으로'규칙 문자열'을 구성 하 는 것 입 니 다.이'규칙 문자열'은 문자열 에 대한 여과 논 리 를 표현 하 는 데 사 용 됩 니 다.
정규 표현 식 이 무엇 입 니까?규칙-문자열 과 일치 하 는
정규 에 대해 서 는 문자열 과 만 연 결 됩 니 다.우리 가 고려 해 야 할 것 은 같은 위치 에 나타 날 수 있 는 문자 의 범위 이다.
정규 표현 식 은 무엇 을 할 수 있 습 니까?
•1.입력 한 문자열 이 합 법 적 인지 검사 합 니 다.웹 개발 프로젝트 폼 검증◦사용자 가 한 내용 을 입력 할 때 미리 검 사 를 해 야 합 니 다.
◦프로그램의 효율 을 높이 고 서버 의 압력 을 줄 일 수 있 습 니 다.
•2.큰 파일 에서 규칙 에 맞 는 모든 내용 을 찾 을 수 있 습 니 다.로그 분석\파충류◦는 큰 텍스트 에서 규칙 에 맞 는 내용 을 빠르게 찾 을 수 있 습 니 다.
문자 그룹:[문자 그룹]
같은 위치 에 나타 날 수 있 는 여러 문자 로 문자 그룹 을 구성 하고 정규 표현 식 에서[]로 표시 합 니 다.하나의 괄호 는 한 글자 의 위치 만 표시 한다.
 문 자 는 숫자,자모,구두점 등 여러 종류 로 나 뉜 다.만약 당신 이 지금 한 위 치 를 요구한다 면,이 위치의 문 자 는 0,1,2...9 이 10 개의 숫자 중 하나 일 수 밖 에 없다.
     문자 그룹 은 한 위치 에서 나타 날 수 있 는 모든 가능성 을 설명 합 니 다.
    # 수용 범 위 는 여러 범 위 를 묘사 할 수 있 고 이어서 쓰 면 된다.
    # [abc]    하나의 괄호 는 하나의 문자 위치 만 표시 하고 a 또는 b 또는 c 와 일치 합 니 다.
    # [0-9]     일치 하 는 숫자 0-9,ASCII 에 따라 범위 비교
    # [a-z]     모든 소문 자 일치
    # [A-Z]     모든 대문자 일치
    # [a-zA-Z]  모든 대소 문자 일치
    # [0-9a-z]
    # [0-9a-zA-Z_]
문자:
        문자:
        문자           일치 하 는 규칙
        .               줄 바 꿈 자 를 제외 한 임의의 문자 와 일치 합 니 다.
        \w              알파벳 이나 숫자 또는 밑줄 일치
        \s              임의의 공백 문자 일치
        \d              일치 하 는 숫자
                      줄 바 꿈 문자 일치
        \t              탭 문자 일치
        \b              단어의 끝 과 일치 합 니 다.
        ^               문자열 의 시작 과 일치 합 니 다.
        $               문자열 의 끝 과 일치 합 니 다.
        \W              비 자모 나 숫자 또는 밑줄 일치
        \D              일치 하지 않 는 숫자
        \S              일치 하 는 공백 문자
        a|b             일치 하 는 문자 a 또는 문자 b
        표현 식|b 표현 식   a 또는 b 표현 식 의 내용 과 일치 합 니 다.a 와 일치 하면 b 와 계속 일치 하지 않 습 니 다.따라서 두 규칙 이 겹 치 는 부분 이 있 으 면 항상 긴 것 을 앞 에 놓 습 니 다.
        ()              그룹 을 나 누고 괄호 안에 있 는 표현 식 과 일치 하 며 그룹 을 표시 합 니 다.원 문자 의 역할 범 위 를 제약 하고()내 에서 만 유효 합 니 다.
        []              문자 그룹
        [^]             문자 그룹 이 아 닙 니 다.문자 그룹 에 있 는 문 자 를 제외 한 모든 문자 와 일치 합 니 다.
        정규 표현 식 에서 일치 하 는 내용 을 표시 할 수 있 는 기 호 는 모두 정규 중의 메타 문자 입 니 다.
        # [0-9]        -->  \d   임의의 숫자 digit 와 일치 함 을 표시 합 니 다.
        # [0-9a-zA-Z_] -->  \w   일치 하 는 숫자 알파벳 밑줄 표시 word
        # 빈 칸-->
        # tab  -->  \t
        # Enter Enter  --> 
        # 스페이스 바,tab,리 턴-->\s  모든 공백 표시
        # [\d]  \d  표시
        # [\d\D] [\w\W] [\s\S]  모두
        # [^\d]  모든 비 숫자 일치
        # [^1]  숫자 1 을 제외 한 모든 것 과 일치 합 니 다.  
        # [1-9]\d 두 정수 일치
        # [1357]\d  1,3,5,7,시작 하 는 두 정수 와 일치 합 니 다.
              예 1:여러 사이트 주소 와 일치 합 니 다:
             www\.oldboy\.com|www\.baidu\.com|www\.jd\.com|www\.taobao\.com     #\.취소
             www\.(oldboy|baidu|jd|taobao)\.com    #()로|설명 한 내용 의 범 위 를 제약 합 니 다.      
        메모리 문자:어떤 내용 과 일치 할 수 있 는 지 를 표시 합 니 다.원 문 자 는 항상 한 문자 의 위치 에 있 는 내용 을 표시 합 니 다.
        # \d \w \s \t \D \W \S
        # [] [^] .
        # ^ $
        # | ()
양사:
        양사  용법 설명
        *      0 회 혹은 그 이상 반복    {0,}
        +      한 번 또는 여러 번 반복 하 다    {1,}
        ?      0 회 또는 1 회 반복,0 회 또는 1 회 일치    {0,1}
        {n}    n 회 반복,n 회 일치
        {n,}   n 회 이상 반복,최소 n 회 일치
        {n,m}  n~m 회 반복,최소 n 회,최대 m 회 일치
        예:
            정수 일치\d+
            소수 일치\d+\.\d+
            정수 나 소수 일치:\\d+\.?\\d*\#문제 가 있 습 니 다.예 를 들 어 1.일치 합 니 다.   --->  그룹의 역할:\d+(\.\d+)?
        예:핸드폰 번호 매 칭,핸드폰 번호 1 로 시작,2 위 3-9,총 11 위             
            1[3-9]\d{9}
            #사용자 가 입력 한 내용 이 합 법 적 인지 판단 하고 사용자 가 입력 한 것 이 맞 으 면 결 과 를 찾 을 수 있 으 며 입력 한 것 이 틀 리 면 결 과 를 찾 을 수 없다.
                 ^1[3-9]\d{9}$
            # 큰 파일 에서 규칙 에 맞 는 모든 내용 을 찾 습 니 다.
                 1[3-9]\d{9}  
전의 부호:
 원래 특별한 의 미 를 가 진 문 자 는 그 자체 의 의 미 를 표현 할 때 전의 가 필요 하 다.     
     . 특별한 의미 가 있 습 니 다.특별한 의 미 를 취소 합 니 다\.
  문자 그룹 에 넣 으 면 특별한 의미 가 있 는 내용 이 있 습 니 다.
                #기호 자체
          [().*+?] 모든 내용 은 문자 그룹 에서 특별한 의 미 를 취소 합 니 다.        
         #a-c(a 감 c)
          [a\-c]  -문자 그룹 에 범 위 를 표시 합 니 다.범 위 를 표시 하지 않 으 려 면 전의 가 필요 하거나 문자 그룹의 맨 앞 에 놓 으 십시오.\맨 뒤에 놓 으 십시오.
 메타 문자 의 특별한 의 미 를 취소 하 는 방법 은 두 가지 가 있 습 니 다.
        1.이 문자 앞 에\\
        2.일부 문자 에 적 용 됩 니 다.이 메타 문 자 를 문자 그룹 에 넣 습 니 다.
            # [.()+?*]
탐욕 일치:

 1.    :           ,           
  .*x                      x      
      : 
 2.   (  )  :                 。   *,+       ,        ,   ?           
  .*?x                      x    
  .+?x         1    x     
     +  +? --->       
            :
   *?      ,       
   +?   1     ,       
   ??   0  1 ,       
   {n,m}?   n m ,       
   {n,}?   n   ,       
    :       :18/15      
 # 15 :     1-9,  15 
  [1-9]\d{14}
 # 18 :     1-9,   0-9  X,  18 
   [1-9]\d{16}[\dx]
   [1-9]\d{16}[0-9x]
 #1:
  [1-9]\d{16}[0-9x]|[1-9]\d{14}   #                  。     [1-9]\d{16}[0-9x]          [1-9]\d{14}
  ^([1-9]\d{16}[0-9x]|[1-9]\d{14})$  #              
 #2:  
  [1-9]\d{14}(\d{2}[\dx])?  #                  
  ^[1-9]\d{14}(\d{2}[\dx])?$  #               。()    , \d{2}[\dx]    ,               0-1 
   :
   :1\d*?3      :1243333344      :1243
   :1\d*3       :1243333344      :12433333
re  :
# findall              ,             。         ,        。
 ret = re.findall('9\d\d','19740ash93010uru')
 print(ret)#['974', '930']
 ret = re.findall('9(\d)\d','19740ash93010uru')
 print(ret)#['7', '3']
# search              ,              ,         group     ,       , ()    。
 search           ,          
           
    .group()           .group(0)     
    .group(n)          n          
 ret = re.search('9(\d)(\d)','19740ash93010uru')
 print(ret) #    <_sre.SRE_Match object; span=(1, 4), match='974'>
 if ret:
  print(ret.group())#974 #ret.group(0) 0     
  print(ret.group(1))#7
  print(ret.group(2))#4
#     search           findall   ?
                    。        ?           
                    ,                                          ,                    ,           ,                   ()   ,                  。
#         
                  ,              ,   ?:            
 # (?:)            
#findall
 ret = re.findall('<\w+>(\w+)</\w+>','<h1>askh930s02391j192agsj</h1>')
 print(ret)#['askh930s02391j192agsj']
# search
 ret = re.search('<(\w+)>(\w+)</\w+>','<h1>askh930s02391j192agsj</h1>')
 print(ret.group())#<h1>askh930s02391j192agsj</h1>
 print(ret.group(1))#h1
 print(ret.group(2))#askh930s02391j192agsj
# exp         ,     , a+b    a-b          
  exp = '2-3*(5+6)'
  ret = re.search('(\d+)[+](\d+)',exp)
  print(ret)
  print(ret.group(1))#5
  print(ret.group(2))#6
  print(int(ret.group(1)) + int(ret.group(2)))#11
 #       douban.html,       :
 with open('douban.html',encoding='utf-8') as f:
  content = f.read()
 ret = re.findall('<span class="title">(.*?)</span>(?:\s*<span class="title">.*?</span>)?',content)
 print(ret)
 #       ,                   。
 (.*?)            ?         
 (?:\s*<span class="title">.*?</span>)?
 ?:            ,  ()       \s*              
 .*?               ?      0    1 
#      
 #               ,                 --      
 #        File--Settings--Project Interpreter-- + --   ---Install Package
 import requests
 ret = requests.get('https://movie.douban.com/top250?start=0&filter=')
 print(ret.content.decode('utf-8'))
총결산
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 정규 표현 식 re 모듈(부분)입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기