day26 re正则表达式
生活随笔
收集整理的這篇文章主要介紹了
day26 re正则表达式
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?Python之路,Day14 = Python基礎(chǔ)14
?
1 compile() 2 match() 3 search() 4 findall() 5 6 m.group() # 括號(hào)里面剋跟參數(shù),表示打印里面(分組)的第幾個(gè)元素(索引從1開(kāi)始) 需要測(cè)試下 7 8 9 a = re.compile(r'abc') # 制作匹配規(guī)則 10 a.search('abcdefghijk') # a是一個(gè)對(duì)象 11 12 match # 從第一個(gè)開(kāi)始匹配 13 findall # 找出所有符合規(guī)則的 14 search # 從前往后開(kāi)始尋找 15 16 元字符 17 . # 除換行符的任意字符 18 \ # 轉(zhuǎn)義字符 19 # re 模塊是 python 調(diào)用的一個(gè) 小型語(yǔ)言,如果 規(guī)則里面有 \\ 的話, 20 # python 解釋器在讀取的時(shí)候,就會(huì)先把它轉(zhuǎn)成 \ 去掉特殊意義, 21 # 但是 re 里面還是需要轉(zhuǎn)化 \ 的特殊意義,所以,需要 \\\\ 來(lái)使用 22 # 經(jīng)過(guò) python 的時(shí)候,變成了 \\, 到 re 里面,就變成了 \; 23 [...] # 字符集合 24 25 \d # 數(shù)字[0-9] 26 \D # 非數(shù)字[^0-9] 27 \s # 空白字符[<空格>\t\r\n\f\n] 28 \S # 非空白字符[^\s] 29 \w # 單字字符[A-Za-z0-9] 30 \W # 非單詞字符[^\w] 31 32 數(shù)量詞字符 33 * # 匹配前0個(gè)字符1次或者多次 34 + # 匹配前一個(gè)字符1次或者多次 35 ? # 匹配前一個(gè)字符0次或者1次 36 {m} # 匹配前一個(gè)字符m次 37 {m,n} # 匹配前一個(gè)字符m至n次 38 數(shù)量詞?# 變成非貪婪模式(默認(rèn)為貪婪模式,盡可能的匹配多的次數(shù)) 39 40 ^ 41 '^[abc]' # 以a或b或c開(kāi)頭的 42 '[^abc]' # 非a、b、c 43 44 45 邊界字符 46 ^ # 匹配字符串開(kāi)頭,多行匹配每一行開(kāi)頭 47 '^[abc]' # 以a或b或c開(kāi)頭的 48 '[^abc]' # 非a、b、c 49 50 $ # 匹配字符串末尾,多行匹配每一行末尾 51 \A # 僅匹配字符串開(kāi)頭,注意轉(zhuǎn)義字符 52 \Z # 僅匹配字符串末尾,注意轉(zhuǎn)義字符 53 \b # 匹配\w和\W之間,注意轉(zhuǎn)義字符 54 55 56 邏輯、分組 57 | # 或 58 ret = findall("www\.(?:\w+)\.(?:com|cn)") 59 # findall 默認(rèn)只顯示 分組的信息(括號(hào)里面的), 加了 ?: 那么就取消優(yōu)先級(jí)啊(打印所有) 60 # | 兩個(gè)要用 括號(hào) 括起來(lái) 61 62 (...) # 匿名分組 63 a = re.compile('(a)b(c)') 64 a.match('abcdefg') 65 a.groups() # 分組匹配。會(huì)打印出一個(gè)元組,符合規(guī)則a的為第一個(gè)元素,符合規(guī)則c的為第二個(gè)元素,如果后面的規(guī)則也有括號(hào)的話,依次變?yōu)樵?/span> 66 67 68 (?P<name>...) # 除了分組外還替該組制定一個(gè) name 的別名 69 p = re.compile('(?P<name>a)b(c)') 70 a = p.match('abcdef') 71 a.group('name') # 可以把這個(gè)對(duì)應(yīng)的元素取出來(lái) 72 a.groups() 73 a.groupdict() 74 75 76 \<number> # 引入編號(hào)為<number>的分組匹配到的字符串 77 p = re.compile(r'(?<name>a)b(c)\1') # 注意 1 前面的 \ ,不加 r ,會(huì)被當(dāng)成轉(zhuǎn)義字符,可以寫兩個(gè) \ 78 # \1 像當(dāng)與在這個(gè)位置引用了前面第一個(gè)的那個(gè)規(guī)則(分組里面的第一個(gè)),同樣,不會(huì)被寫入到分組中 79 p.match('abcdef') 80 a.groups() 81 a.groupdict() 82 83 84 (?P=name) # 引用別名為<name>的分組匹配到的字符串 85 p = re.compile('(?<name>a)b(c)(?P=name)') 86 # (?P=name) 相當(dāng)于在這個(gè)位置引用了前面那個(gè) 名字叫 name 的這個(gè)規(guī)則,雖然這里有括號(hào),但是它只會(huì)匹配到,不會(huì)放入分組中 87 p.match('abcdef') 88 a.groups() 89 a.groupdict() 90 91 92 93 特殊構(gòu)造 94 (?:...) # (...) 不分組版本,雖然在括號(hào)里面,但是不進(jìn)行分組 95 (?#...) # #號(hào)后面的內(nèi)容將作為注釋 96 (?=...) # 后面的限定詞滿足 ... 條件 97 re.compile(r'a(?=\d)') # 匹配前面是a,后面是數(shù)字的內(nèi)容,得到的結(jié)果顯示出a,不顯示后面的數(shù)字 98 (?!...) # 后面的限定詞不滿足 ... 條件 99 (?<=...) # 前面的限定詞滿足 ... 條件 100 (?<!...) # 前面的限定詞不滿足 ... 條件 101 (?(id/name) yes |no) # 102 # re.compile(r'(\d)?abc(?(1)\d|abc)') 103 # 匹配規(guī)則為 (\d)?abc ,有分組; 104 # (?(1)\d|abc) 前面 分組里面位置為 1 的規(guī)則,可以是數(shù)字,也可以是 abcdef 105 106 107 正則表達(dá)式開(kāi)關(guān) 108 忽略大小寫: 109 可以寫成:re.compile(r'(?i)abc') 110 開(kāi)關(guān)模式:re.compile(r'abc', re.I) # 推薦 111 112 113 sub 114 p = re.compile(r'(\w) (\w)') 115 s = 'hi you, good boy' 116 print(p.sub(r'\2 \1', s) 117 >>> you hi, boy good?
轉(zhuǎn)載于:https://www.cnblogs.com/alwaysInMe/p/7082023.html
總結(jié)
以上是生活随笔為你收集整理的day26 re正则表达式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [UWP]用Shape做动画(2):使用
- 下一篇: 经典算法学习——冒泡排序