選項操作
如您選中「套用規則運算式」選項方塊,將可在尋找和取代以及以下的批量取代功能中套用行業標準規則運算式。
選用此選項後「比對全詞」與「套用特殊字元」選項將隱藏,但大小寫視為相異選項仍保留。
隱藏「比對全詞」選項是因為標準規則運算式中已有相關開關,且功能更為精細可控。套用規則運算式時,如果您在一個單字的左右兩邊加「\b」開關(此開關指單字的邊界),如在
word 兩邊同時加「\b」後,運算式變為「\bword\b」),則表示比對 word 全詞。不過您也可以根據自己的需要只在一邊加,如「\bword」可以比對「word」和「words」。還有一個相關的開關是大寫的「\B」,表示非單字邊界。如「word\B」可以比對單字「words」,但不比對「word」。
隱藏「套用特殊字元」是因為「套用特殊字元」功能是本軟體的自有功能,規則運算式包含了「套用特殊字元」的所有內容,所以此選項不必再保留。
基本使用
規則運算式是一種具有相當複雜度的專業技術,但也具有極其強大的功能。對於一個未曾專門學習過規則運算式的普通人,您一般需要花半天到兩整天時間才能粗通它的使用。相關內容可以寫成一本 N 多頁的小書才能寫全,我們也不打算在此提供詳細說明。後面會附一個線上的規則運算式教程及索引清單,有興趣的使用者可以自行存取學習。
我們舉例說明規則運算式的使用。
以下是一些最基本、最常用的規則運算式運算子:
元字元格式 |
簡介 |
備註 |
\b |
單字邊界,只是一個位置,並不是一個字元。 |
此元字元僅指示位置,不對應具體字元或字串。
\bword\b 就表示比對 word
時要求比對單字。這個符號也可以左右分別選用,可以只用左不用右,也可以只用右不用左。 |
\B |
表示單字內部,此處不是單字邊界。 |
此元字元僅指示位置,不對應具體字元或字串。
\bword\B 表示這裡的 word 必須是某個單字的左邊的一部分,如 words 符合此要求,但 word 不符合。 |
\s |
空白字元,包括空白、定位字元和換頁符。 |
相當於:[ \f\n\r\t\v] |
\S |
除了空白字元(空白、定位字元和換頁符)以外的任何字元。 |
相當於:[^ \f\n\r\t\v] |
\d |
數字字元(0-9)。 |
相當於:[0-9] |
\D |
除數字字元(0-9)以外的任意字元。 |
相當於:[^0-9] |
\w |
任意字母(a-z,A-Z)或數字(0-9)。 |
相當於:[A-Za-z0-9] |
\W |
除了 a-z、A-Z、0-9 以外的任意字元。 |
相當於:[^A-Za-z0-9] |
\A |
整篇文字的開頭。 |
此元字元僅指示位置,不對應具體字元或字串。 |
\Z |
整篇文字的結尾。 |
此元字元僅指示位置,不對應具體字元或字串。 |
^ |
一行的開頭。這只是一個位置,並不是一個具體的字元。 |
此元字元僅指示位置,不對應具體字元或字串。 |
$ |
一行的結束。這只是一個位置,並不是一個具體的字元。 |
此元字元僅指示位置,不對應具體字元或字串。 |
. |
萬用字元,比對除換行符以外的任意字元。 |
|
* |
重複 0 次或多次。 |
相當於{0,} |
+ |
重複 1 次或多次。 |
相當於{1,} |
.* |
「.」和「*」的組合,表示任意長度的任意字元(不包括換行符)。 |
|
.*? |
".*"的變體,表示找到符合要求的最短結果。如無「?」,「.*」將比對符合要求的最長結果。 |
|
[字集] |
比對字集中的任一字元。左邊是「[」,右邊是「]」,中間是需要比對的一組字元的集合。 |
[A-Z] 指 26 個大寫英文字元中的任一個;[a-z] 指 26 個小寫英文字元中的任一個;[0-9] 指數字 0-9 中的任一個;如果寫為 [A-Za-z0-9] 則比對所有字母和數字;如果是 [aieou] 則比對元音字母 aieou 中的任一個。 |
[^字集] |
比對除字集中指定字元以外的所有字元。 |
[^aieou] 可比對除 a、i、e、u、o 外的所有字元,如「2」、「b」、「-」等。 |
\元字元 |
轉義字元。如某字元本身具有特殊意義,在此字元左邊加上「\」可以取消其特殊意義,僅指該字元本身。 |
如「\[」指字元「[」;如「\]」指字元「]」。由於「[]」是用於指定字集的元字元,如果您直接寫「[」或「]」則指字集,不能表示此元字元。為了得到「[」或「]」本身,需要在左邊加左斜線「\」符號。 |
\n |
Windows 換行字元,與相當於 Windows 編程中的「\r\n」。 |
|
\t |
定位字元。 |
|
| |
此字元適用於分隔多種選擇。當運算式中有三樣以上元素時,此元字元在本引擎上表現不穩定,可能會出錯,
使用時務必應先取多個樣本測試效果,確定有效再使用。 |
「A|Z」指 A 或 Z。 |
(運算式) |
以「運算式」定義的一個集合。 |
將括號內的內容當作一個完整集合。如 ([A-Z][0-9][0-9])。 |
{n,m} |
重複次數,格式為{n,m}、{n,}或{n}。
其中 n 表示最低重複次數,m
表示最高重複次數。最高重複次數 m 可省略(此時表示重複次數不少於 n,但無上限);但最低重複次數 n 不可省略。
{n,m}:重複 n-m
次。如{1,5}指重複 1 至 5 次。
{n,}:重複 n
次以上。如{0,}指重複 0 次以上,相當於*;而如{1,}指重複 1 次以上,相當於+。
{n}:重複 n 次。如{5}指重複
5 次。 |
此元字元指此前面部分的重複次數,經常與集合(exp)一起使用。
一些例子:
\w{1,}:相當於\w+,比對一串由 a-z、A-Z 和 0-9 構成的字串,長度至少一位。此寫法常用於比對一個單字。
(\w+ ){1,5}:比對由
1-5 個單字構成的字串,其中單字之間以一個空白分隔(注意最後也有一個空白)。 |
例 1
比對包含有如「[StudentA02]」形式的標籤的行。具體地說,左右有方括號「[」和「]」,括號內開始的字串是 Student,後面有一個大寫字母和 2 個數字(01-99),這樣的行如:
學生 [StudentA02] 上午上數學課。
學生 [StudentC93] 早上打掃衛生。
我們假設需要搜尋的內文中全部都是有效字串,沒有形如 [StudentN00](最後兩位數字為 00)的無效字串,那麼就可以不用考慮存在錯誤的可能性,簡單地以以下的運算式進行搜尋:
^.*?\[Student[A-Z][0-9][0-9]\].*?\n
例 2
a
比對不含有「student」的行:
(?!.*student)^.*$
以上運算式用到的語法是「(?!exp)」,比對後面跟的不是「exp」的位置。此用法在後面列出的《規則運算式 30 分鐘入門教程》
中有介紹。此比對可以認為是以下比對的簡化版:
b
比對包含「teacher」,但不含有「student」的所有行:
(?!.*student)^.*?teacher.*?$
例 3
a
比對內容為「Start Line」的行及往前的所有行:
\A(.*?\n){2,}Start Line\n
b
比對從內容為「End Line」的行及往後的所有行:
^End Line(.*?\n){2,}.*?\Z
以上運算式用到的語法是「(?!exp)」,比對後面跟的不是「exp」的位置。此用法在以下教程中提到。
例 4
a
比對以單字「and」開頭,以單字「whose」結尾,中間包含 2 個任意單字(由字母+數字組成)的行:
^.*?\band \w+ \w+ whose\b.*?\n
b
比對以單字「and」開頭,以單字「whose」結尾,中間包含 0-5 個任意單字(由字母+數字組成)的行。如果中間的單字數為
0,即指含「and whose」的行:
^.*?\band (\w+ ){0,5}whose\b.*?\n
規則運算式精選教程
請勿被以下教程標題中的「30
分鐘」字樣所誤導。粗通規則運算式的精細使用一般需要半天到兩整天的時間。至於完全精通...那時間海了去了...當然一般也無此必要。不過您可以先找您喜歡的少量主要功能使用,這樣很快就能上手了。
《規則運算式 30 分鐘入門教程》
很好的中文入門教程,對於規則運算式的初學者,30 分鐘肯定不夠,正常情況下需要半天到一天才能基本弄懂。
原網址:
http://deerchao.net/tutorials/regex/regex.htm
在谷歌上尋找:
http://www.google.com.hk/search?num=100&hl=zh-CN&newwindow=1&c2coff=1&safe=strict&biw=1920&bih=915&q=%22%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F30%E5%88%86%E9%92%9F%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B%22&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=
在百度上尋找:
http://www.baidu.com/s?rn=100&bs=%D0%C2%C3%EB%C9%B1&f=8&wd=%D5%FD%D4%F2%B1%ED%B4%EF%CA%BD30%B7%D6%D6%D3%C8%EB%C3%C5%BD%CC%B3%CC
《The 30 Minute Regex Tutorial》(英文版)
英文教程。
原網址:
http://www.codeproject.com/KB/dotnet/regextutorial.aspx
在谷歌上尋找:
http://www.google.com.hk/search?num=100&hl=zh-CN&newwindow=1&c2coff=1&safe=strict&biw=1920&bih=915&q=%22The+30+Minute+Regex+Tutorial%22&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=
《Introduction to Regular Expressions》(英文版)
英文教程,微軟出的。
原網址:
http://msdn.microsoft.com/en-us/library/28hw3sce
在谷歌上尋找:
http://www.google.com.hk/search?num=100&hl=zh-CN&newwindow=1&c2coff=1&safe=strict&biw=1920&bih=915&q=%22Introduction+to+Regular+Expressions%22&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=
最重要的部分(規則運算式語法):
http://msdn.microsoft.com/en-us/library/ae5bf541.aspx
本軟體規則運算式引擎的模式設定
指定大小寫:使用者可選。
多行模式:指定採用。
單行模式:指定不採用。
不同規則運算式引擎的主幹功能是一樣的,但在某些偏枝細節上可能有微小的差異。本軟體所用規則運算式引擎也一樣,在個別偏枝功能上可能會和這些教程中寫得不一樣,您需要仔細研究並大量測試才能深入掌握。
4.4 批量取代
當尋找/取代對話方塊中左下角的「啟用取代功能」檢查方塊被選中時,可以使用強大的專業級編輯功能 -「批量取代」功能。
按一下「批量取代」按鈕,即可開啟「批量取代」對話方塊:
圖
UG-4-2 批量取代主對話方塊
該功能允許一次性對上或下編輯區中的文字連續進行不限次的多組取代,每組尋找和取代詞均可為多行文字,每組取代可單獨設定是否套用、比對全詞、大小寫視為相異和應用特定字元等選項。
每套批量取代設定均可儲存為檔案長期使用。批量取代功能既是強大的文字編輯功能,也可以作為簡繁轉換的有益補充。
在安裝套件中隨附了一個頁面清理,可用於規範、整理英文文章的標點、空白及段落佈局,也可用作編輯、製作批量取代巨集的參考樣本。