# 正規表示式基礎知識# #
# #
# # 使用正規表示式時,能用簡單表示式,就不要用複雜的表示式。因為越複雜的正規表示式效率反而不高且易讀性極差。
# #
# # 一.概述
# #
# 正規表示式,regular
# expression,縮寫為regex、regexp、re等。 正規表示式是文字處理極為重要的技術,用它可以對字串按照某種規則進行檢索、替換。
# thompson將正規表示式引入到unix中文字編輯器ed和grep命令中,由此正規表示式普
# 及開來。
# # 二.分類
# #
# bre
# 基本正規表示式,grep、sed、vi等軟體支援。vim有擴充套件。
# # ere
# 擴充套件正規表示式,egrep(grep - e)、sed - r等。
# # pcre
# 幾乎所有高階語言都是pcre的方言或者變種。python從1
# .6
# 開始使用sre正規表示式引擎,可以認為是pcre
# 的子集,見模組re。
# #
# 三.基本語法
# # 1 >.元字元(metacharacter)
# #
# .# 匹配除換行符外任意乙個字元。
# # [abc]
# 字元集合,只能表示乙個字元位置。匹配除去集合內字元的任意乙個字元。
# # [ ^ abc]
# 字元集合,只能表示乙個字元位置。匹配除去集合內字元的任意乙個字元。
# # [a - z]
# 字元範圍,也是集合,表示乙個字元位置匹配所包含的字元。類似的還有[a - z], [0 - 9]。
# # [ ^ a - z]
# 字元範圍,也是個集合,表示乙個字元位置匹配除去集合內字元的任意乙個字元。
# # \b
# 匹配單詞的邊界。
# # \b
# 不匹配單詞的邊界。
# # \d
# [0 - 9]
# 匹配1位數字。
# # \d
# [ ^ 0 - 9]匹配1位數字。
# # \s
# 匹配1位空白字元,包括換行符, 製表符,空格。例如:[\f\r\n\t\v]
# # \s
# 匹配1位非空白字元。
# # \w
# 匹配[a - za - z0 - 9
# _], 包括中文的字。
# # \w
# 匹配\w之外的字元。
# # 2 >.轉義
# # 凡是在正規表示式中有特殊意義的符號,如果想使用它的本意,請使用\轉義。 反斜槓自身,得使用\ \
# \
# \r、\n還是轉義後代表回車、換行
# 3 >.重複
# #
# *# 表示前面的正規表示式會重複0次或多次。
# # +
# 表示前面的正規表示式至少重複1次。
# # ?
# 表示前面的正規表示式會重複出現0次活1次。
# #
# 重複固定的n次。
# #
# 重複至少n次。
# #
# 重複n到m次。
# # 4 >.或
# # x | y
# 匹配x或者y。
# 5 >.捕獲
# #
# (pattern)
# 使用小括號指定乙個子表示式,也叫分組捕獲後會自動分配組號從1開始可以改變優先順序。
# # \數字
# 匹配對應的分組。
# # (?:pattern)
# 如果僅僅為了改變優先順序,就不需要捕獲分組。
# # (? < name > exp)
# 或(?'name'
# exp)
# 命名分組捕獲,但是可以通過name訪問分組。python的re標準庫愈發必須是(?p < name > exp)。
# # 6 >.零寬斷言
# # (?=exp)
# 零寬度正**先行斷言,斷言exp一定在匹配配的右邊出現,也就是說斷言後面一定跟個exp。
# # (? <= exp)
# 零寬度正回顧後發斷言,斷言exp一定出現在匹配的左邊出現,也就是說前面一定有個exp字首。
# 7 >.負向零寬斷言
# # (?!exp)
# 零寬度負**先行斷言,斷言exp一定不會出現在右側,也就是說斷言後面一定不是exp。
# # (? < !exp)
# 零寬度負回顧後發斷言,斷言exp一定不能出現在左側,也就是說斷言前面一定不能是exp。
# 8 >.注釋
# # (? # comment)
# 注釋,比如f(?=oo)(? # 這個後斷言不捕獲)
# 9 >.貪婪與非貪婪(預設就是貪婪模式,也就是說盡量多匹配匹配更長的字串。)
# #
# *?
# 匹配任意次,但盡量可能少重複。
# # +?
# 匹配自少一次,但盡可能少重複。
# # ??
# 匹配0次或1次,但盡可能少重複。
# # ?
# 匹配至少n次,但盡可能少重複。
# # ?
# 匹配至少n次,至多m次,但盡可能少重複。
# # 10 >.引擎選項
# #
# ignorecase
# 匹配時忽略大小寫。
# # singleline
# 單行模式,可以匹配所有字元,包括\n。
# 需要注意的是,在單行模式中,"."
# 可以匹配所有字元,包括換行符。"^"
# 表示整個字串的開頭,「$」整個字串的結尾。
#
# multiline
# 多行模式, ^ 行首,$行尾。
# 需要注意的是,在多行模式中,"."
# 可以匹配除了換行符之外的字元,多行不影響「.」點號。"^"
# 表示行首,「¥」表示行尾,只不過這裡的行是每一行。
# # ignorepatternwhitespace
# 忽略表示式中的空白字元,如果要使用空白字元用轉義, # 可以用來做注釋。
# # 11 >.單行模式和多行模式注意事項
# #
# 單行模式:
# .可以匹配所有字元,包括換行符
# ^ 表示整個字串的開頭,$整個字串的結尾
# # 多行模式:
# .可以匹配除了換行符之外的字元,多行不影響.點號
# ^ 表示行首,$行尾,只不過這裡的行是每乙個行
# # 預設模式:
# 可以看做待匹配的文字是一行,不能看做多行,.點號不能匹配換行符, ^ 和$表示行首和行尾,而行首行尾就
# 是整個字串的開頭和結尾
# # 單行模式:
# 基本和預設模式一樣,只是.點號終於可以匹配任意乙個字元包括換行符,這時所有文字就是乙個長長的只有
# 一行的字串。 ^ 就是這一行字串的行首,$就是這一行的行尾。
# # 多行模式:
# 重新定義了行的概念,但不影響.點號的行為, ^ 和$還是行首行尾的意思,只不過因為多行模式可以識別換行
# 符了。"開始"
# 指的是\n後緊接著下乙個字元;
# "結束"
# 指的是\n前的字元,注意最後一行結尾可以沒有\n
# #
# 簡單講,單行模式只影響.點號行為,多行模式重新定義行影響了 ^ 和$
# # 注意: 注意字串中看不見的換行符, \r\n會影響e$的測試,e$只能匹配e\n
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...