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)