경험 치 픽업 (핸드 메 이 드) = > Python 정규 전체 설명

사전 컴 파일
import re
re1 = re.compile(r'           ')    #        
re1.  ()                     #        

문자:
      :
    .    #   
\d # 0-9 \D # \d , \s # \S # \s , , # [\s\S]*? \w # \W # \w , 、 、 [] # [abcde] , 。 , [a-e] eg: re.compile(r'[e-h]').match('hello python ').group(0) >>> h : [^abcde] [^a-e] ' ', abcde : ^ # , re.M # : [^123] 123 eg: import re r1 = re.compile(r'^\d+') print(r1.search('456hello123').group()) >>> 456 $ # , re.M eg: import re s = """ 123abc456 678abc789 """ r1 = re.compile(r'\d+$',re.M) # re.M print(r1.findall(s)) >>> ['456', '789'] # re.M, >>> ['789'] # re.M, , : re.M
, , \b: # ( 、 、 ) eg: import re s = ' ---- P' r1 = re.compile(r'\b ') print(r1.findall(s)) >>> # : ‘ ’ , 。 ’ ‘ , \B: # ( 、 、 ) eg: import re s = ' ---- P' r1 = re.compile(r'\b ') print(r1.findall(s)) >>> # : ‘ ’ , 。 ’ ‘ 。 # : \b \B: \b: 。 :( 、 、 、 ) \B: 。 :( 、 、 、 ) : * : 0 eg: * + : 1 eg: + ? : 0 eg: ? {m} : m eg: {3} {m,} : m eg: {3,} # , {m,n}: m n eg: {3,6} : | : , , () : , 。 .group(1) , group(2).. (?P) : (?P=name) : eg: s = '

' r1 = re.compile(r'\w+)>(\w+)(?P=name1)>').match(s).group(2) print(r1) >>> \ : eg: s = '

' r1 = re.compile(r'(\w+)\1>') # \1 print(r1.match(s).group(2)) # 2 >>>

일치 모드
re.M    #     ,      ^   $,     ^   $     。
re.I    #      
        eg:
            s = 'aAbB'
            r1 = re.compile(r'aabb', re.I).match(s).group()
            print(r1)
            >>> aAbB

re.S    #    .    ,    .           
        s = """
        hello
        python
        """
        r1 = re.compile(r'.*', re.S).match(s).group()    #      re.S
        print(r1)
        >>> hello
            python
          :     re.S    .*              ,          
re.X # , , eg: import re title = '1 2 3' r1 = re.compile(r""" 1 # 1 # 2 ,1 。 , """, re.X) # , re.X , result = r1.match(title).group() print(result) # : 1

탐욕 모드 와 비 탐욕 모드
    : 
        :(Python            ) 
                        ,                      。
                                  。   ( )
        
            :
            *   +
            
         :
                  ,             ,                。
                   ,     .
        
            :
            *?   +?

    eg1:  search     (match  )
               :search()           :     ,            。
        OK,  。
        
          :(  ):
            import re
            r1 = re.compile(r'\d+')
            print(r1.search('  333  333  ').group())
            >>> 333        #           ,          '333'           
        
           (       ? ):
            import re
            r1 = re.compile(r'\d+?')
            print(r1.search('  333  333  ').group())
            >>> 3          #  ,             ,           ,    。
            
    
    eg2:   findall     (   findall   ,      ,       ,    )
             :findall()           :         ,            
        OK,  。
        
          (  ):
            import re
            r1 = re.compile(r'\d+')
            print(r1.findall('  333  333  '))
            >>> ['333', '333']
            
              :            。
                                :“                 ”
                  findall                     
                  
                                    ,           ‘333‘  
                  findall                ,           
                          ['333', '333']
                  
           :
            import re
            r1 = re.compile(r'\d+?')
            print(r1.findall('  333  333  '))
            >>> ['3', '3', '3', '3', '3', '3']

              :                。
                                  :“                   ”
                  findall                     
          
                                    ,          ‘3‘  
                  findall                ,           
                          ['3', '3', '3', '3', '3', '3']

일치 방법
match():
    '''
        match()              ,      ,           ,   None
    '''
    
    s = 'hello python'
    re1 = re.compile(r'he')  
    re1.match('')
    result = re1.match(s).group() if re1.match(s) else None   #   : None  group  
    print(result)        #    group()                  
    >>> he
    
          :
        s = 'hello python'
        re1 = re.compile(r'h(e)llo') #  e    (),        ,        
        result = re1.match(s).group(1) if re1.match(s) else None 
            #        group(1)       1,                
                >>> e
            #     group()   group(0)                 
                >>> hello
        print(result)    
        >>> e
    
      -  (  -  )    :
          :          ,       (        ,   )
        eg:
            a = '123-%%%-dd'
            result = re.compile(r'123(-(%%%)-)d(d)').match(a).groups()   
            #     group(1), group(2), group(3)   groups()      
            print(result)
            >>> ('-%%%-', '%%%', 'd') 

search():
    """
        search()    :        ‘  ’,       ,      None
    """
    s = "aaa123aaa"
    r1 = re.compile(r'\d+').search(s).group()
    print(r1)     
    >>> 123

findall():
    """
        findall()    :       ,            ,            
    """
    s = "aaa---123---bbb"
    r1 = re.compile(r'\w+').findall(s)
    print(r1)
    >>> ['aaa', '123', 'bbb']
    
           :
        a = '123-%%%-dd'
        result = re.compile(r'-(.*?)-').findall(a)
        print(result)
        >>> %%%
        #   : findall()              ,                
        
finditer():
    """
        finditer()   findall()       ,              ,easy,      
    """
    
split():
    """
        split()   :       ,            
    """
        :
                   split()   ,             ,            
                       ,     。
          ,    split()            ,     :
        
    s = "aaa%%123@@bbb"                  #     ,% @        ,         
    r1 = re.compile(r'\W+').split(s)     # \W   :              ,   
    print(r1)
    >>> ['aaa', '123', 'bbb']

sub():
    """
        sub()   :               ,            
    """
      1:    ,         ,               
        eg:
            s = "aaa%%123@@bbb"
            r1 = re.compile(r'\W+').sub('  ',s)
            print(r1)
            >>> aaa  123  bbb
        
      2:               ,                
        eg:
            s = "aaa%%123@@bbb"
            r1 = re.compile(r'\W+').sub(lambda a:a.group()*2, s)
            print(r1)
            >>> aaa%%%%123@@@@bbb
              :             %% @@,       2 ,       %%%% @@@@
            
subn():
    """
        subn()   sub()      ,                 ,(   ,   )
    """
    s = "aaa%%123@@bbb"
    r1 = re.compile(r'\W+').subn('  ',s)
    print(r1)
    >>> ('aaa  123  bbb', 2)
    
        
        

좋은 웹페이지 즐겨찾기