# todo 首先明白
# ^ 表示從哪開始; ^在 裡面表示否定。
# todo 匹配單個字元
# \d 0~9
# [1-8] 等於 [12345678] [1-36-8] --> [123678] [1-8a-ca-c] -->[12345678abcabc] 中括號裡面的表示範圍
# \w 範圍很廣 英文 數字 中文 _ 都可以匹配(這是因為它是utf-8編碼)但是!?等不行,所以它也只是範圍比較廣罷了。
# \s 空白字元 比如:空格鍵。tab鍵
# . 基本上可以理解為linux的 * 這是是任意的乙個字元,匹配不了換行(\n)。
# ps: 所有的\大寫字母都是它們的補集
# $ 以誰結尾
# ? 代表存在 0或者1個。
# todo 匹配多個字元
# \d 一位數,兩位數,三位數都可以。 \d--->11位數字(此種是滿足{}前面的資料的。比如:a便只有a aa aaa 滿足)
# ?前面的那乙個可有可無
# .* .匹配任意單個字元,唯獨匹配不了換行(\n), * 配皮任意個數,空的也行(+和*的區別便是:+號是一次或者多次,*是零次或者多次)。————————》可以在re.match()的引數中新增乙個re.s便可使.匹配的了\n了。
# todo 特別一點的
# | 相當於 or 但是你用的時候需要括號闊起來 例如:(163|126)代表163和126都可以正確匹配。------>group(引數)可以取出括號中匹配的東西(類似索引)--->這便是分組
# 分組也是可以直接運用到正規表示式裡的。例如:r"<(\w*)>.*" 中的\1是必須要和(\w*)中的資料是一樣的---->這裡的1還是類似於索引的
# 如果覺得索引可能會分不清的話,那麼也是可以給分組起名的。例如 r"(?p\w*).*" ----->p是大寫的
# todo re中的其它模組
# match() 用的最多的。是從頭開始按照正則開始匹配。
# search().group()是不用從頭開始匹配的。 只會匹配第乙個資料,然後就會返回。 比如 \d+ 匹配"sada888dsad999" 只會返回888.----->如果想要達到match()的作用的話 加乙個 ^ 即可
# findall() 不需要用group()了,會以列表的形式返回所有的匹配的資料。
# sub(r"\d+","998","python = 997, c++ = 1024") 它也不需要用group,是先匹配正則,然後將匹配的資料替換了,再返回。----->只要匹配的地方,全部都替換。
# 另外,它還支援函式的呼叫 "998"可以是乙個函式的引用,當成功匹配的時候,需要替換的字串會呼叫這個函式並接收它的返回值。
# split可以切割字串,不需要呼叫group()。例:split(r":| ","info:xiaozhang 33 shanghai") 會返回 ["info","xiaozhang","33","shanghai"].
# todo 正則的貪婪:
# 貪婪模式就是「.+」中的+會一直查詢到最後乙個符合條件的字元。
# 非貪婪模式就是在「.+?",會匹配到第乙個符合條件的字元就停止。
# 舉例:前者會匹配到 234 的 4;後者會匹配到2。
python中常用正規表示式
print re.findall d 123abc 數字 1 2 3 print re.findall d abcaa123abc 非數字 a b c a a a b c print re.findall abc 123abcaaabc abc abc print re.findall aa nab...
python中常用正規表示式
1 匹配字母數字和下劃線 a za z0 9 等價於 w 取非 a za z0 9 等價於 w 2 匹配數字 0 9 等價與 d d 表示任意個數字。取非 0 9 等價與 d u4e00 u9fa5 匹配單個漢字,不含標點符號 u4e00 u9fa5 匹配詞語或以上漢字 取非 u4e00 u9fa5...
Java中常用的正規表示式
public class stringregex 檢查 輸入是否正確 正確格式 012 87654321 0123 87654321 0123 7654321 param value return public boolean checktel string value d d d d 3 d 8 ...