python re.findall 使用


python re.findall 使用

 1 import re
 2 
 3 #\w 匹配字母數字及下划線
 4 print(re.findall('\w','hello alan _god !@^&#^$^!*&(*'))
 5 
 6 #\W 匹配非字母數字下划線
 7 print(re.findall('\W','hello alan _god !#@!#$(#*'))
 8 #\s 匹配空白字符
 9 print(re.findall('\s',"alan and god *& YUN CHINA"))
10 #\S  匹配非空白字符
11 print(re.findall('\S',"alan and god *& YUN CHINA"))
12 #d\ 數字與 D\ 非數字
13 print(re.findall('\d',"2018年9月8日16:54:30alan and god *& YUN CHINA1949"))
14 print(re.findall('\D',"20182018年9月8日16:54:20alan and god *& YUN CHINA1949"))
15 
16 #\A 匹配字符串開始
17 print(re.findall('\ACH',"CH2018年9月8日16:54:30alan and god *& YUN CHINA1949"))
18 #\Z 匹配字符串結束
19 print(re.findall('Z\Z',"20182018年9月8日16:54:20alan and god *& YUN CHINA1949ZZ"))
20 
21 #^ 字符串開頭 與 $字符串結尾
22 
23 print(re.findall('^a',"alan and god *& YUN CHINA"))
24 print(re.findall('NA$','alan and god *& YUN CHINA'))
25 #.  匹配任意
26 print(re.findall('an.','alan and angod *& YUN CHINA'))
27 print(re.findall('a.a','a a alan and a&a ata aa'))
28 
29 #* 匹配0或多個
30 print(re.findall('an*','a a alan and god  anSB anang *& YUN CHINA'))
31 print(re.findall('an*','alan and a&a ata a a'))
32 
33 #? 匹配0或1------------------------
34 print(re.findall('ag?','age avg agre amg a'))
35 print(re.findall('agg?','aggge avgagg aggre amg ag'))
36 
37 #匹配所有包含小數在內的數字
38 print(re.findall('\d+.?\d*','123adf 1.33663fsdf13fsdf1fsdf3'))
39 
40 #.*默認為貪婪匹配
41 print(re.findall('a.*d','adss andgod930 axds9kidg'))
42 
43 #.*?為非貪婪匹配
44 print(re.findall('a.*?d','andgod930 axds9kidg ad aa'))
45 
46 #+ 1或多
47 print(re.findall('and+','andgod930 axds9kidg an and anddd andddSSS'))
48 
49 #{n,m}  >=n,<m
50 print(re.findall('an{2}','andgod930 axds9kidg an annd anndd anddd andddSSS'))
51 print(re.findall('an{1,3}','andgod930 axds9kidg an annd anndd anddd andddSSS'))
52 print(re.findall('ab{1,}','abbb abs a ab bb'))
53 print(re.findall('ab{0,}','abbb abs a ab bb abb'))
54 
55 #[]內的都為普通字符了,且如果-沒有被轉意的話,應該放到[]的開頭或結尾
56 print(re.findall('a[1*-]b','a1b a*b a-b asb aab allb a--b'))
57 
58 #[]內的^代表的意思是取反
59 print(re.findall('a[^1*-]b','a1b a*b a-b a=b'))
60 
61 #[]內的0-9 之間匹配 0到9 之間的整數
62 print(re.findall('a[0-9]b','a1b a*b a-b a=b a0b a00b '))
63 
64 #[]內的a-z 之間匹配 小寫字母
65 print(re.findall('a[a-z]b','a1b a*b A-D a-b a=b aeb aAb abb acb azb'))
66 
67 #[]內的A-Z 之間匹配 大寫字母
68 print(re.findall('[A-Z]','a1b a*b A-D a-b a=b aeb aAb abb acb azb'))
69 
70 #[]內的a-z 或者 A-Z 之間匹配 大寫字母 與小寫字母
71 print(re.findall('a[a-zA-Z]b','a1b a*b a-b a=b aeb aEb aab aAb aZb azb'))
72 
73 
74 #\ 與 \ 與 \\
75 
76 #對於正則來說a\\c確實可以匹配到a\c,但是在python解釋器讀取a\\c時,會發生轉義,然后交給re去執行,所以拋出異常
77 print(re.findall('a\\c','a\c')) 
78 #r代表告訴解釋器使用rawstring,即原生字符串,把我們正則內的所有符號都當普通字符處理,不要轉義
79 print(re.findall(r'a\\c','a\c a\\c a c ac'))
80 #和上面的結果一樣
81 print(re.findall('a\\\\c','a\c a\\c '))
82 
83 #() 分組
84 print(re.findall('ab+','ababab123 abc abd'))
85 
86 #匹配到末尾的ab123中的ab
87 print(re.findall('(ab)+123','abab123 abc123 abb123 aa1234 ab1234'))
88 
89 #findall的結果不是匹配的全部內容,而是組內的內容,?:可以讓結果為匹配的全部內容
90 print(re.findall('(?:ab)+123','ababab123 abc123 abb123 aa1234 ab1234'))
91 
92 print(re.findall('href="(.*?)"','<a href="http://www.baidu.com">百度</a> <a href="http://www.google.com">go</a> <a href="http://www.yunhua.com">go</a>'))
93 
94 print(re.findall('href="(?:.*?)"','<a href="http://www.baidu.com">百度</a> <a href="http://www.google.com">go</a> <a href="http://www.yunhua.com">go</a>'))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM