查找和替換:正則表達式
通過使用正則表達式,可以在 Microsoft FrontPage 中執行繁複的查找和替換操作。正則表達式是在搜索文本或代碼的過程中,說明要查找的一個或多個字元串範式,它由普通字元和特殊字元組成。如果您不知道所要查找的確切文本或代碼,或者如果您正在查找文本或代碼字元串的多種類似情況時,可以使用正則表達式。
若要使用正則表達式,請打開 FrontPage 中的「查找和替換」對話框,選擇「正則表達式」複選框,並在「查找內容」框中鍵入一個正則表達式範式。通過「正則表達式」箭頭,可以訪問部分常用語法字元。
在搜索中使用正則表達式時,特定的規則將控制哪些字元組合執行哪些特定的匹配操作。每種正則表達式(或正則表達式組合)都要稱為語法。可以在一個語法中使用多個正則表達式以精確匹配您所要搜索的目標。
下表說明了 FrontPage 的正則表達式和相關的語法。
表達式 | 語法 | 說明 |
任何字元 | . | 作為通配符,可匹配除換行符 ( ) 以外的任何單個列印或非列印字元。 例如,正則表達式DE>c.tDE>可匹配 cat、c t、cot 等字元串,但不匹配 cost。本例中,句號 (.) 是一個代表單個字元的通配符。它出現在字母 "c" 和 "t" 之間,因此,字元 "c" 和 "t" 之間的任何單個字元都與表達式匹配——即使是空格也一樣。 |
最多——零個或多個 | * | 匹配此表達式前一字元的零次或多次出現,可匹配儘可能多的字元。 正則表達式 DE>.*DE> 匹配一個字元的零次或多次出現。 例如,正則表達式 DE>b.*kDE> 可以匹配 book、back、black、blank 和 buck。本例中,我們將句號 (.) 與星號 (*) 組合為一個語法。句號 (.) 後面緊接著星號 (*) 表達式。星號 (*) 匹配 "b" 和 "k" 間任何字元的零次或多次出現。句號 (.) 是 "b" 和 "k" 之間字元的通配符。本例中,這表示在 "b" 和 "k" 間可以重複出現任何字元。 |
最多——一個或多個 | + | 匹配此表達式前一字元的一次或多次出現,可匹配儘可能多的字元。 正則表達式 DE>.*DE> 匹配一個字元的一次或多次出現。 例如,正則表達式 DE>bo+.DE> 可以匹配 bob、book 和 boot。本例中,我們將句號 (.) 與加號 (+) 組合為一個語法。加號 (+) 表達式後面緊接著句號 (.)。加號 (+) 匹配字母 "o" 的一次或多次出現。句號 (.) 是每個單詞最後一個字元的通配符,在本例中為 "b"、"k" 和 "t"。 |
最少——零個或多個 | @ | 匹配此表達式前一字元的零次或多次出現,可匹配儘可能少的字元。 正則表達式 DE>.@DE> 表示匹配一個字元的零次或多次出現。 例如,正則表達式 DE>a.@xDE> 匹配 "abxbxb" 中的 "abx" 和 "acxcxc" 中的 "acx"。本例中,我們將句號 (.) 與 at 符 (@) 組合為一個語法。句號 (.) 後面緊接著 at 符 (@) 表達式。at 符 (@) 匹配 "a" 和 "x" 間任何字元零次或多次出現。本例中,句號 (.) 是 "a" 和 "x" 之間字元 "b" 和 "c" 的通配符。 |
最少——一個或多個 | # | 匹配此表達式前一字元的一次或多次出現,可匹配儘可能少的字元。 例如,正則表達式 DE>si.#erDE> 匹配 "sicker" 或 "silkier"。句號 (.) 與井字元 (#) 組合為一個語法。句號 (.) 後面緊接著井字元 (#) 表達式。井字元 (#) 匹配 "si" 和 "er" 之間任何字元的一次或多次出現。句號 (.) 是通配符,在單詞 "sicker" 中代表字元 "c" 和 "k",在單詞 "silkier" 中代表字元 "l"、"k" 和 "i"。 |
字符集 | [ ] | 匹配括弧 ([ ]) 內的任意一個字元。可以使用連字號 (-) 指定字元的範圍,例如 DE>[a-z]DE>。 例如: |
行首 | ^ | 將匹配定位於行首。 例如,正則表達式 DE>^When inDE> 匹配以「When in」作為開始且出現於行首的任何字元串,例如「When in the course of human events」或「When in town, call me」。然而,此正則表達式不匹配出現於行首的「What and when in the course of human events」。 |
行尾 | $ | 將匹配定位於行尾。 例如,正則表達式 DE>professional$DE> 可匹配字元串「He is a professional」,但卻不匹配字元串「They are a group of professionals」。 |
文件開頭 | ^^ | 將匹配定位於文件開頭。僅適用於在源代碼或文本文件中搜索文本。 例如,若要匹配文件開頭的第一個 HTML 標記,可使用下列正則表達式:DE>^^<html>DE> |
文件末尾 | $$ | 將匹配定位於文件末尾。僅適用於在源代碼或文本文件中搜索文本。 例如,若要匹配文件末尾的最後一個 HTML 標記(標記後沒有空格),可使用下列正則表達式:DE></html>$$DE> |
或者 | | | 表示在兩項間進行選擇,即匹配 OR 符號 (|) 前面或後面的表達式。 例如,正則表達式 DE>(him|her) DE>匹配下列情況: 但它不能匹配「it belongs to them」。 |
轉義特殊字元 | 匹配反斜線 ( ) 後面的字元。這樣可允許您查找正則表達式語法中使用的字元(如左大括弧 ({) 或插字型大小 (^))或其他一些特殊字元。 例如,可使用 DE>$DE> 匹配美元符號 ($) 而不會讓正則表達式「定位於行尾」。同樣,可使用表達式 DE>.DE> 匹配句號 (.) 字元而不是任意單個字元(句號 (.) 表達式功能)。 |
|
標記的表達式 | {} | 對與括弧內表達式匹配的文本加標記。可以在「查找」表達式中匹配其他處的標記文本或者使用 N 將標記文本插入「替換」表達式。 例如,假設您要查找連續出現兩次的單詞。若要搜索,請使用下列表達式:DE>{.#} 1DE> 假設連續出現的單詞由一個空格隔開,則需要在右側大括弧與反斜線之間添加一個空格。 本例中,我們將帶有大括弧 ({}) 的井字元 (#) 與句號 (.) 組合為一個語法。在此表達式中,DE>.#DE> 表示任何連續的字元。由於表達式的此部分括有大括弧 ({}),連續的字元可被標記起來並被指定為 1。此表達式將查找跟隨空格的任何連續字元,且其後緊接著完全相同的該字元序列。 |
第 N 個標記表達式 | N | 在「查找」表達式中,N 匹配由第 N 個標記表達式指定的文本,其中 N 是 1 到 9 的數字。 在「替換」表達式中,N 插入由第 N 個標記表達式指定的文本,其中 N 是 1 到 9 的數字。 插入整個「查找」表達式指定的文本。 例如,假設要查找連續出現兩次的單詞,並使用一個單詞替換它們。若要搜索,請使用下列表達式:DE>{.#} lDE> 假設連續出現的單詞由一個空格隔開,則需要在右側大括弧與反斜線之間添加一個空格。本例中,我們將帶有大括弧 ({}) 的井字元 (#) 與句號 (.) 組合為一個語法。 若要替換,請使用下列表達式:DE>lDE> 1 表示在查找字元串中第一個大括弧部分找到的內容。通過在替換操作中使用 1,實際上是將連續出現兩次的單詞替換為一個單詞。 |
組表達式 | ( ) | 標記子表達式的開始和結束。 子表達式是包含在括弧 ( ) 中的正則表達式,例如下列表達式:DE>(ha)+DE>。本例中,我們將帶有括弧組合 ( ) 的加號 (+) 組合為一個語法。此子表達式為 (ha),因為它包含在括弧 ( ) 中。當您添加加號 (+) 時,該表達式可以查找重複的字母對。加號 (+) 表示重複出現一次或多次的 "ha"。 此表達式匹配下列情形:"haha" 和 "hahaha"。 |
防止匹配 | ~x | 當 x 出現在表達式的該位置時會防止匹配。 例如,正則表達式 DE>real~(ity)DE> 匹配 "realty" 和 "really" 中的 "real",但卻不匹配 "reality" 中的 "real"。 |
換行符 | 匹配「代碼」視圖中的換行符或「設計」視圖中的 <br>。 語法 ( |
|
製表符 | 匹配單個製表符。 例如,如果要查找所有位於行首的製表符,可使用下列正則表達式: DE>^ +DE> 本例中,我們將帶有製表符 ( ) 的插字元 (^) 與加號 (+) 組合為一個語法。插字元 (^) 位於單個製表符字元表達式之前,用於匹配位於行首的所有製表符。加號 (+) 表示匹配一個或多個製表符字元。 |
|
任何一個不屬於該集合的字元 | [^] | 匹配任何一個不屬於插字型大小 (^) 後面的字符集的字元。 例如,若要匹配範圍之外的任何字元,可使用插字型大小 (^) 作為左側中括弧後面的第一個字元。表達式 DE>[^269A-Z]DE> 匹配除 2、6、9 和任何大寫字母之外的所有字元。 |
重複表達式 | ^n | 匹配插字型大小 (^) 前面的表達式的 n 次出現。 例如,若 n 為 4,表達式 DE>[0-9]^4DE> 匹配任何 4 位數序列。在本例中,我們將字符集 ([ ]) 語法與重複 (^n) 語法組合以展示一個正則表達式的實用方法。 |
字母數字字元 | :a | 匹配表達式 DE>[a-zA-Z0-9]DE>。 可以使用表達式 DE>[a-zA-Z0-9]DE> 匹配出現一次的字母(大寫或小寫)或數字。也稱為字母數字序列。可使用簡寫表達式 DE>:aDE> 代替 DE>[a-zA-Z0-9]DE>。 |
空格 | :b | 匹配代碼或文本中的空格。 例如,若要匹配行首的單個空格字元,可使用下列正則表達式:DE>^:bDE> |
字母字元 | :c | 匹配表達式 DE>[a-zA-Z]DE>。使用此表達式可匹配所有大寫或小寫字母。 可以使用簡寫表達式 DE>:cDE> 代替所有 DE>[a-zA-Z]DE>。 |
十進位數 | :d | 匹配表達式 DE>[0-9]DE>。此表達式可匹配任何數字。 例如,假設您需要在文本文件中搜索社會福利號。美國的社會福利號的格式為 999-99-9999。DE>:d^3-:d^2-:d^4DE> 或 DE>[0-9]^3-[0-9]^2-[0-9]^4]DE>(使用 [0-9] 表示)可返回相同結果。 可使用簡寫表達式 DE>:dDE> 代替所有 DE>[0-9]DE>。 |
十六進位數 | :h | 匹配表達式 DE>[0-9a-fA-F]+DE> 使用此表達式可匹配由 "A" 和 "F" 間的大寫或小寫字母和任意數字組成的十六進位數。 例如,假設網站中的網頁擁有多種不同的背景顏色,而您要將這些網頁的顏色更改為空白(如 000000)。但是,您不知道現有顏色值的十六進位。使用下列正則表達式可查找所有現有十六進位值: DE>#:hDE>可以使用 [0-9a-fA-F] 搜索,但在本例中我們將反斜線 () 和帶有十六進位數字 (:h) 語法組合在一起。# 匹配非表達式井字元 (#),而 :h 匹配任何十六進位字元序列。 若要替換現有十六進位數值,可鍵入所需背景顏色的十六進位數值: DE>000000DE> |
標識符 | :i | 匹配表達式 DE>[a-zA-Z_$][a-zA-Z0-9_$]*DE> 處理代碼時,如果需要匹配所有程序標識符,則可使用簡寫表達式 DE>:i DE>,而無需鍵入上述冗長的表達式。 |
有理數 | :n | 匹配表達式 DE>([0-9]+.[0-9]*)|([0-9]*.[0-9]+)|([0-9]+)DE> 如果需要匹配包含小數點的整個數值,可使用簡寫表達式 DE>:nDE>,而無需鍵入上述冗長的表達式。 |
引起的字元串 | :q |
推薦閱讀: