正規表示式使用指南四

2021-04-06 21:21:15 字數 1305 閱讀 6928

本節前面的主題中的示例只涉及章節標題查詢。字串 chapter 後面跟空格和數字的任何匹配項可能是實際章節標題,或者也可能是指向另一章的交叉引用。由於真正的章節標題總是出現在行的開始,所以設計一種方法只查詢標題而不查詢交叉引用可能很有用。

定位點提供該能力。定位點使您能夠將正規表示式固定到行首或行尾。它們還使您能夠建立這樣的正規表示式,這些正規表示式出現在乙個單詞內、在乙個單詞的開頭或者乙個單詞的結尾。下表包含正規表示式定位點以及它們的含義的列表:

字元 說明

^ 匹配輸入字串開始的位置。如果設定了 regexp 物件的 multiline 屬性,^ 還會與 /n 或 /r 之後的位置匹配。

$ 匹配輸入字串結尾的位置。如果設定了 regexp 物件的 multiline 屬性,$ 還會與 /n 或 /r 之前的位置匹配。

/b 匹配乙個字邊界,即字與空格間的位置。

/b 非字邊界匹配。

不能將限定符與定位點一起使用。由於在緊靠換行或者字邊界的前面或後面不能有乙個以上位置,因此不允許諸如 ^ 之類的表示式。

若要匹配一行文字開始處的文字,請在正規表示式的開始使用 ^ 字元。不要將 ^ 的這種用法與中括號表示式內的用法混淆。

若要匹配一行文字的結束處的文字,請在正規表示式的結束處使用 $ 字元。

若要在搜尋章節標題時使用定位點,下面的正規表示式匹配乙個章節標題,該標題只包含兩個尾隨數字,並且出現在行首:

/^chapter [1-9][0-9]/

真正的章節標題不僅出現行的開始處,而且它還是該行中僅有的文字。它即出現在行首又出現在同一行的結尾。下面的表示式能確保指定的匹配只匹配章節而不匹配交叉引用。通過建立只匹配一行文字的開始和結尾的正規表示式,就可做到這一點。

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

匹配字邊界稍有不同,但向正規表示式新增了很重要的能力。字邊界是單詞和空格之間的位置。非字邊界是任何其他位置。下面的表示式匹配單詞 chapter 的開頭三個字元,因為這三個字元出現字邊界後面:

//bcha/

/b 字元的位置是非常重要的。如果它位於要匹配的字串的開始,它在單詞的開始處查詢匹配項。如果它位於字串的結尾,它在單詞的結尾處查詢匹配項。例如,下面的表示式匹配單詞 chapter 中的字串 ter,因為它出現在字邊界的前面:

/ter/b/

下面的表示式匹配 chapter 中的字串 apt,但不匹配 aptitude 中的字串 apt:

//bapt/

字串 apt 出現在單詞 chapter 中的非字邊界處,但出現在單詞 aptitude 中的字邊界處。對於 /b 非字邊界運算子,位置並不重要,因為匹配不關心究竟是單詞的開頭還是結尾。

正規表示式使用指南二

下表從最高到最低說明了各種正規表示式運算子的優先順序順序 運算子 說明 轉義符 括號和中括號 限定符 anymetacharacter,anycharacter 定位點和序列 替換 字元的優先順序比替換運算子高,替換運算子允許 m food 與 m 或 food 匹配。若要匹配 mood 或 foo...

正規表示式使用指南六

正規表示式的最重要功能之一是儲存匹配的模式的一部分以供以後重新使用的能力。您可能想起,若在正規表示式模式或模式的一部分兩側加上括號,就會導致表示式的一部分被儲存到臨時緩衝區中。可以通過使用非捕獲元字元 或 來重寫捕獲。每個捕獲的子匹配項按照它們在正規表示式模式中從左到右出現的順序儲存。緩衝區編號從 ...

正規表示式使用指南七

正規表示式 符號匹配字串的開頭。例如 abc 與 abc xyz 匹配,而不與 xyz abc 匹配 符號匹配字串的結尾。例如 abc 與 xyz abc 匹配,而不與 abc xyz 匹配。注意 如果同時使用 符號和 符號,將進行精確匹配。例如 abc 只與 abc 匹配 符號匹配0個或多個前面的...