1. 程式人生 > >day26 re正則表達式

day26 re正則表達式

數字 logs you 元組 arc 括號 註意 一行 換行

Python之路,Day14 = Python基礎14

  1 compile()
  2 match()
  3 search()
  4 findall()
  5 
  6 m.group()  # 括號裏面剋跟參數,表示打印裏面(分組)的第幾個元素(索引從1開始)   需要測試下
  7 
  8 
  9 a = re.compile(rabc)     # 制作匹配規則
 10 a.search(abcdefghijk)    # a是一個對象
 11 
 12 match   # 從第一個開始匹配
 13 findall  # 找出所有符合規則的
 14 search  #
從前往後開始尋找 15 16 元字符 17 . # 除換行符的任意字符 18 \ # 轉義字符 19 # re 模塊是 python 調用的一個 小型語言,如果 規則裏面有 \\ 的話, 20 # python 解釋器在讀取的時候,就會先把它轉成 \ 去掉特殊意義, 21 # 但是 re 裏面還是需要轉化 \ 的特殊意義,所以,需要 \\\\ 來使用 22 # 經過 python 的時候,變成了 \\, 到 re 裏面,就變成了 \; 23 [...] # 字符集合 24 25
\d # 數字[0-9] 26 \D # 非數字[^0-9] 27 \s # 空白字符[<空格>\t\r\n\f\n] 28 \S # 非空白字符[^\s] 29 \w # 單字字符[A-Za-z0-9] 30 \W # 非單詞字符[^\w] 31 32 數量詞字符 33 * # 匹配前0個字符1次或者多次 34 + # 匹配前一個字符1次或者多次 35 ? # 匹配前一個字符0次或者1次 36 {m} # 匹配前一個字符m次 37 {m,n} #
匹配前一個字符m至n次 38 數量詞?# 變成非貪婪模式(默認為貪婪模式,盡可能的匹配多的次數) 39 40 ^ 41 ^[abc] # 以a或b或c開頭的 42 [^abc] # 非a、b、c 43 44 45 邊界字符 46 ^ # 匹配字符串開頭,多行匹配每一行開頭 47 ^[abc] # 以a或b或c開頭的 48 [^abc] # 非a、b、c 49 50 $ # 匹配字符串末尾,多行匹配每一行末尾 51 \A # 僅匹配字符串開頭,註意轉義字符 52 \Z # 僅匹配字符串末尾,註意轉義字符 53 \b # 匹配\w和\W之間,註意轉義字符 54 55 56 邏輯、分組 57 | # 58 ret = findall("www\.(?:\w+)\.(?:com|cn)") 59 # findall 默認只顯示 分組的信息(括號裏面的), 加了 ?: 那麽就取消優先級啊(打印所有) 60 # | 兩個要用 括號 括起來 61 62 (...) # 匿名分組 63 a = re.compile((a)b(c)) 64 a.match(abcdefg) 65 a.groups() # 分組匹配。會打印出一個元組,符合規則a的為第一個元素,符合規則c的為第二個元素,如果後面的規則也有括號的話,依次變為元素 66 67 68 (?P<name>...) # 除了分組外還替該組制定一個 name 的別名 69 p = re.compile((?P<name>a)b(c)) 70 a = p.match(abcdef) 71 a.group(name) # 可以把這個對應的元素取出來 72 a.groups() 73 a.groupdict() 74 75 76 \<number> # 引入編號為<number>的分組匹配到的字符串 77 p = re.compile(r(?<name>a)b(c)\1) # 註意 1 前面的 \ ,不加 r ,會被當成轉義字符,可以寫兩個 \ 78 # \1 像當與在這個位置引用了前面第一個的那個規則(分組裏面的第一個),同樣,不會被寫入到分組中 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) 相當於在這個位置引用了前面那個 名字叫 name 的這個規則,雖然這裏有括號,但是它只會匹配到,不會放入分組中 87 p.match(abcdef) 88 a.groups() 89 a.groupdict() 90 91 92 93 特殊構造 94 (?:...) # (...) 不分組版本,雖然在括號裏面,但是不進行分組 95 (?#...) # #號後面的內容將作為註釋 96 (?=...) # 後面的限定詞滿足 ... 條件 97 re.compile(ra(?=\d)) # 匹配前面是a,後面是數字的內容,得到的結果顯示出a,不顯示後面的數字 98 (?!...) # 後面的限定詞不滿足 ... 條件 99 (?<=...) # 前面的限定詞滿足 ... 條件 100 (?<!...) # 前面的限定詞不滿足 ... 條件 101 (?(id/name) yes |no) # 102 # re.compile(r‘(\d)?abc(?(1)\d|abc)‘) 103 # 匹配規則為 (\d)?abc ,有分組; 104 # (?(1)\d|abc) 前面 分組裏面位置為 1 的規則,可以是數字,也可以是 abcdef 105 106 107 正則表達式開關 108 忽略大小寫: 109 可以寫成:re.compile(r(?i)abc) 110 開關模式:re.compile(rabc, 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

day26 re正則表達式