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.pyimport re
a = 'java2node9C++0python3C#88'
b = re.findall('\\d',a)
print(b)
print(re.findall('\\D',a))
3. c.3 pyimport 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 pyimport 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 pyimport 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.pyimport 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.pyimport 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.pyimport 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.pyimport 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.pyimport 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 pyimport 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 pyimport 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月先生の学習ノートで、学習としてのみ使用します)