python正規表現、グループマッチング


1. c 1.py
import re
#      
#                ,                      ;
#       ,           

a = 'Java|node|Javascript|C++|node'

# print(a.index('node'))
# print('node' in a)

result = re.findall('nodj',a)

print(len(result))

if len(result) > 0:
    print('          ')
else:
    print('no')
2. c 2.py
import re

a = 'java2node9C++0python3C#88'

b = re.findall('\\d',a)
print(b)
print(re.findall('\\D',a))
3. c.3 py
import re

a = 'abc, acc, afc, adc, aec'

# c  f
print(re.findall('a[cf]c',a))
#   c   f
print(re.findall('a[^cf]c',a))
# c f
print(re.findall('a[c-f]c',a))
4.まとめ文字セット  c.4 py
import re
#      
a = '____abcd3e5f6j7p9w0&@#¥%* 
\r\t' # \d: ( [0-9] ) \D: ( [^0-9] ) print(re.findall('\\d',a)) print(re.findall('[0-9]',a)) print(re.findall('\\D',a)) print(re.findall('[^0-9]',a)) # \w : ( [A-Za-z0-9_] ) : :& # \W : ( [^A-Za-z0-9_] ) :&,@,#,¥,%,*, ,
( ),\r( ),\t( ) # \s : ,
( ),\r( ),\t( ) &,@,#,¥,%,* # \S : # . :
print(re.findall('\\w',a)) print(re.findall('[A-Za-z0-9_]',a)) print(re.findall('\\W',a)) print(re.findall('[^A-Za-z0-9_]',a)) print(re.findall('\\s',a)) print(re.findall('\\S',a)) print(re.findall('.',a))
5.数量詞 c 5 py
import re
#    
# (1)   {}
    #           :     
    #                   :     
# (2)* :  *         0         (0  )
# (3)+ :  +         1         (1  )
# (4)? :  ?         0   1        (0 1)

#   
#      ?     0 1    ?   ,    ?     ;  0 1  ?     

# print('~~~~~~~~~~~   ~~~~~~~~~~~~')
# a = 'python 11java6node0php8'
# print(re.findall('[a-z][a-z]',a))
# print(re.findall('[a-z][a-z][a-z]',a))
# print(re.findall('[a-z]{3}',a))
# print(re.findall('[a-z]{3,6}',a))

#      :     (  :{3,6}   3-6                  (php 3,python 6     ) )
#     :        ,              (  :{3,6}?)
# print('~~  ~~   ~~')
# print(re.findall('[a-z]{3,6}',a))
# print(re.findall('[a-z]{3,6}?',a))

# print('~~~~~~~~~~~ * ~~~~~~~~~~~~')
# b = 'pytho0python1pythonn2'
# print(re.findall('python*',b))

# print('~~~~~~~~~~~ + ~~~~~~~~~~~~')
# c = 'pytho0python1pythonn2'
# print(re.findall('python+',c))

print('~~~~~~~~~~~ ? ~~~~~~~~~~~~')
c = 'pytho0python1pythonn2'
print(re.findall('python?',c))
6. 境界を合わせる c.6.py
import re
#      
# ^ :  
# $ :  

a = '100001'
b = '1000000001' #           ,b     8 ,            
#   4-8

print(re.findall('\\d{4,8}',a))
print(re.findall('\\d{4,8}',b))
#           ,       
print(re.findall('^\\d{4,8}$',a))
print(re.findall('^\\d{4,8}$',b))

print('~~    ~~')
print(re.findall('000',b)) 
print(re.findall('^000',b))
print(re.findall('000$',b))   
7. グループ c 7.py
import re

#   :   ()      ,       
    # []    :             
    # ()    :             

#     : findall       ,             
    #         ,       '|'        ;  :       or    ,        ,       
    # re.I :     
    # re.S :   .     
    #              ,    ,           ,           

# a = 'PythonPythonPythonPythonPython'
# print(re.findall('(Python){3}',a))

b = 'PythonC#
JavaPhp' # print(re.findall('c#', b)) # print(re.findall('c#', b,re.I)) print(re.findall('c#.{1}', b ,re.I)) print(re.findall('c#.{1}', b ,re.I | re.S))
8. 一般的な正規関数 c 8.py
import re

#            

# sub :  
    # sub(          ,       ,   ,     (0:  ,      ;     :   ) )
    # sub                (          ,            ,        if else   )

#   
    #     replace  ,      ,                ,                     (    )
# a = 'C#PythonC#JavaC#PhpC#'
# aa = a.replace('C#','GO')
# print(a,aa)
    #        ,               ,                       ,                


# b = 'C#PythonC#JavaC#PhpC#'
# print(re.sub('C#','GO',b))
# print(re.sub('C#','GO',b,1))

print('~~        ~~')

c = 'C#PythonC#JavaC#PhpC#'

def convert(value):
    # print(value)
    matched = value.group()
    return '!!' + matched + '!!'

print(re.sub('C#',convert,c))
9. 関数を別の関数のパラメータとして使用します。 c 9.py
import re

#                   ,       ,             

#    sub       

#   :          6    0,  6    9
a = 'A5B3CC9N1M8J4L7'

def convert(value):
    matched = value.group()
    if int(matched) >= 6:
        return '9'
    else:
        return '0'

print(re.sub('\\d',convert,a))
10. 正則におけるmatchとsearchの方法 c 10.py
import re

#      match   search   
#    match  search        group  
    #   span()  ,span          
    # match :              ,            ,              None  (      ,     ,       )
    # search :      ,            ,         None  (     ,     ,       )

#   
    # findall     match search ,    findall    
    # findall     , match search        

a = 'A5B3CC9N1M8J4L7'

print(re.match('\\d',a))
print(re.search('\\d',a))
print(re.findall('\\d',a))

print('~~group  ~~span  ~~')
print(re.search('\\d',a).group())
print(re.search('CC',a).span())
11. グループマッチング c 11 py
import re

# search           
    # group       ,   0
    #              ,group  1          
#          findall  
    #   findall             ,    
# group       ,             ;       ,          ,    groups   

# a = 'life is short,i use python'
# print('~~search~~')
# print(re.search('life.*python',a).group())
# print(re.search('(life.*python)',a).group())
# print(re.search('life(.*)python',a).group())
# print(re.search('life(.*)python',a).group(1))

# print('~~findall~~')
# print(re.findall('life(.*)python',a))

#     python     
b = 'life is short,i use python, i love python'
print(re.search('life(.*)python(.*)python',b).group(0))
print(re.search('life(.*)python(.*)python',b).group(1))
print(re.search('life(.*)python(.*)python',b).group(2))
print(re.search('life(.*)python(.*)python',b).group(0,1,2))
print(re.search('life(.*)python(.*)python',b).groups())
12. Json c 12 py
import json
# json 
    #   :             
    # json        
    #     json     
    # json   :  json          :{'name':'qiyue'}  ;   {'name':    

# json   
    #     
    #     
    #        
    #        

# json     
    #       ,             (      json_str1    ,    )
    #                  (      json_str2       ,       ,    ; json_str3 json_str2    ,json_str3    )

#     
    #  json     Python    (         )   
#    
    #  Python     json        

# print('~~~~    ~~~~')

# json_str1 = "{name:qiyue,age:18}"
# student1 = json.loads(json_str1)
# print(student1)

# json_str2 = "{'name':'qiyue','age':18}"
# student2 = json.loads(json_str2)
# print(student2)

# json_str3 = '{"name":"qiyue","age":18}'
# student3 = json.loads(json_str3)
#   
# print(type(student3))
# print(student3)
# print(student3['name'])
# print(student3['age'])

# json_str4 = '[{"name":"qiyue","age":18},{"name":"qiyue","age":18}]'
# student4 = json.loads(json_str4)
#   
# print(type(student4))
# print(student4)

print('~~~~   ~~~~')

student5 = [
              {"name":'shigandang',"age":18,"flag":False},
              {"name":'xixiaole',"age":18}
            ]
json_str5 = json.dumps(student5)
print(type(json_str5))
print(json_str5)
13. c 13.py
# json            python
# object          dict
# array           list
# string          str
# number          int
# number          float
# true            True
# false           False
# null            None
(備考:以上の内容は7月先生の学習ノートで、学習としてのみ使用します)