正規表示式,以前總結的,大不分來擇自網上

2021-09-08 20:53:39 字數 1490 閱讀 2300

後向引用構造

反向引用提供查詢重複字元組的方便的方法。它們可被認為是再次匹配同乙個字串的快捷指令。

語法:\number,number是組號

(\w)\1,單個字元重複一次

(\w)(?\d)\k

單個數字重複一次

^chapter|section [1-9][0-9]$/

很遺憾,上面的正規表示式要麼匹配行首的單詞 chapter,要麼匹配行尾的單詞 section 及跟在其後的任何數字。如果輸入字串是 chapter 22,那麼上面的表示式只匹配單詞 chapter。如果輸入字串是 section 22,那麼該表示式匹配 section 22。

若要使正規表示式更易於控制,可以使用括號來限制替換的範圍,即,確保它只應用於兩個單詞 chapter 和 section。但是,括號也用於建立子表示式,並可能捕獲它們以供以後使用,這一點在有關反向引用的那一節講述。通過在上面的正規表示式的適當位置新增括號,就可以使該正規表示式匹配 chapter 1 或 section 3。

下面的正規表示式使用括號來組合 chapter 和 section,以便表示式正確地起作用:

/^(chapter|section) [1-9][0-9]$/

在上面的示例中,您只需要使用括號來組合單詞 chapter 和 section 之間的選擇。若要防止匹配被儲存以備將來使用,請在括號內正規表示式模式之前放置 ?:。下面的修改提供相同的能力而不儲存子匹配項:

/^(?:chapter|section) [1-9][0-9]$/

下面的正規表示式使用括號來組合 chapter 和 section,以便表示式正確地起作用:

/^(chapter|section) [1-9][0-9]$/

儘管這些表示式正確地起作用,但 chapter|section 兩側的括號也引起兩個匹配單詞之一**獲以供未來使用。由於在上面的表示式中只有一組括號,因此,只有乙個**獲的「子匹配項」。可以通過使用 regexp 物件的 $1-$9 屬性來引用此子匹配項。

在上面的示例中,您只需要使用括號來組合單詞 chapter 和 section 之間的選擇。若要防止匹配被儲存以備將來使用,請在括號內正規表示式模式之前放置 ?:。下面的修改提供相同的能力而不儲存子匹配項:

/^(?:chapter|section) [1-9][0-9]$/

除 ?: 元字元外,兩個其他非捕獲元字元建立被稱為「**先行」匹配的某些內容。正向**先行使用 ?= 指定,它匹配處於括號中匹配正規表示式模式的起始點的搜尋字串。反向**先行使用 ?! 指定,它匹配處於與正規表示式模式不匹配的字串的起始點的搜尋字串。

例如,假設您有乙個文件,該文件包含指向 windows 3.1、windows 95、windows 98 和 windows nt 的引用。再進一步假設,您需要更新該文件,將指向 windows 95、windows 98 和 windows nt 的所有引用更改為 windows 2000。下面的正規表示式(這是乙個正向**先行的示例)匹配 windows 95、windows 98 和 windows nt:

正規表示式 正規表示式 總結

非負整數 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...

以前學習筆記整理 正規表示式

編寫乙個指令碼,顯示時間和日期,列出所有的登入使用者,顯示系統的更新時間。並把內容輸出到乙個log檔案中。連續 中斷 任何乙個字元 全部轉義 部分轉義 轉義 檔名路徑分隔或做除號 後置引用,命令替換 空命令 messages 等同cat dev null messages 反操作符 萬能匹配符 在正...

以前學習筆記整理 正規表示式

編寫乙個指令碼,顯示時間和日期,列出所有的登入使用者,顯示系統的更新時間。並把內容輸出到乙個log檔案中。連續 中斷 任何乙個字元 全部轉義 部分轉義 轉義 檔名路徑分隔或做除號 後置引用,命令替換 空命令 messages 等同cat dev null messages 反操作符 萬能匹配符 在正...