python-re模块的使用

import  re
'''
w, 匹配数字、字母、下划线
W,非数字字母下划线
d,匹配数字
D,非数字
s,匹配空格、
,	,  
S,非
[a-zA-Z_] a-z或者A-Z或者下划线中的一个字符
. 匹配所有
*  表示前面的字符有0个或多个
+  前面的字符至少有一个
{n,m}  前面的字符有n——m个

'''

print(re.match('abc','abcde').group())#从开头就匹配,
print(re.search('abc','aaabcabc').group())  #查找整个字符串,只要找到一个符合的就停止查找
print(re.findall('abc','abcaaabc'))   #返回的是个列表,查找整个字符串,返回所有符合规格的字符串['abc', 'abc']
print(re.findall(r'w','ab c * 
 	'))#['a', 'b', 'c']
print(re.findall('W','ab 1 2* _
'))#[' ', ' ', '*', ' ', '
']
print(re.findall('s','ab 1 2* _
'))#[' ', ' ', ' ', '
']
print(re.findall('S','ab 1 2* _
'))#['a', 'b', '1', '2', '*', '_']
print(re.findall('d','ab 1 2* _
'))#['1', '2']
print(re.findall('D','ab 1 2* _
'))#['a', 'b', ' ', ' ', '*', ' ', '_', '
']
print(re.findall('w_sb','a_sb b_sb ll_sb'))#['a_sb', 'b_sb', 'l_sb']
print(re.findall('a.c','abc adddvc abbbbc')) #['abc']
print(re.findall('a.*c','abc adddvc abbbbc'))#['abc adddvc abbbbc'] 贪婪的
print(re.findall('a.*?c','abc adddvc abbbbc'))#['abc', 'adddvc', 'abbbbc'] ?与*或者+链接就是就是非贪婪模式
print(re.findall('ab?','a ab ab abbbb')) #?与字符串链接就是前面的字符是一个或者0个 ['a', 'ab', 'ab', 'ab']
print(re.findall('ab*','a ab abb abbbc'))#['a', 'ab', 'abb', 'abbb']
print(re.findall('ab+','a ab abb abbbc'))#['ab', 'abb', 'abbb']
print(re.findall('ab{2,3}','a ab abb abbb abbbbb'))#['abb', 'abbb', 'abbb'] {}这个模式可以代替*,+,?  {0,} {1,}{0,1}
print(re.findall(r'(d{3})-(d{6,8})','010-123456 010-12333333'))#[('010', '123456'), ('010', '12333333')]

print(re.findall(r'href=".*"','<a id="blog_nav_sitehome" class="menu" href="https://www.cnblogs.com/">博客园</a>'))#['href="https://www.cnblogs.com/"']
import re



a = re.findall(r'^re','readbre')   # ^表示开头就匹配。如果再[]中使用^表示取反。除了[]内以外的
a1 = re.findall(r'[^a-z]123b','1123b 4123b a123b')  #除了[^]内以外的

b = re.findall(r're$','readbre')  #  $ 结尾是re的

c = re.findall(r're*','reeee re r')  #*代表前面的字符可以出现0次或多次
c1 = re.findall(r're*?','reeee re r')  #*?表示不贪婪,取0次

d = re.findall(r're+','reeee re r')  #+代表前面的字符可以出现一次或多次
d1 = re.findall(r're+?','reeee re r') #+?表示不贪婪,取1次

d2 = re.findall(r're?','reeee re r')  #   ?单独使用表示前面的字符出现0或1次

e = re.findall(r're{3,5}','reeee ree re') # {} 表示前面的字符出现{3-5}次
'''有了{}可以取代*和+了
{,} 就可以表示 0或多次
{1,} 就可以表示1或多次
'''
f = re.findall(r're[a-z]','re1  re9 rea reb')  #  [a-z]  其中一个

f1 = re.match(r're(d)(d)','re13  re9 rea reb')  #  ()代表分组了
print(f1.group())   #re13
print(f1.groups())   #('1', '3')
'''
print(r.group())     # 获取匹配到的所有结果,不管有没有拿出来
print(r.groups())    # 获取模型中匹配到的分组结果,只拿出匹配分组将匹配到的全部到的字符串中分组部分的结果
'''


f2 = re.split(r'0','103405050607080')
print(f2)

string = 'tom say:i love python,非常喜欢。'
f3 = re.findall(',(.*)。',string)
print(f3)


'''匹配所有数字(包含小数)'''
g = re.findall(r'd+.?d*','asd123.24gsd234fdg34.3hkj..123')
print(g)
原文地址:https://www.cnblogs.com/tarzen213/p/11117204.html