俗話說,工欲善其事,必先利其器。關於windows下的Regex工具,這裡推薦的是:RegexBuddy和PowerGREP。在linux下,也有好用的Regex工具,例如grep的兄弟們,只不過是都是基於命令列的。而這兩款windows下的小工具,其突出特點是可視化,允許嘗試和預覽,極大地方便了使用者。
RegexBuddy:網址是http://www.regexbuddy.com。在編寫正則式時,它提供可視化的支援、提示、調試方面的便利;在使用Regex時,它無私地將正則式轉換為多種語言的字串,還提供了代碼輸出功能。正則式助手,該稱號名副其實。
基本介面
正則式的準系統無外乎搜尋和替換。在本文中,我們使用匹配Email的正則式,代碼如下:
?[Copy to clipboard]View Code PERL
\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b |
此時,RegexBuddy的介面
在點擊“Explain Token”時,能對當前的正則式片斷的作用作出詳細解釋,例如當你把游標移動到\b上再點擊Explain Token,就會啟用協助文檔,自動定位到Word Boundaries這一段。
如果想對剛才編寫的這條正則式進行測試和驗證,可以點擊“Test”進行測試。這時,在下邊的文字框輸入所需要匹配測試的文字,例如dog@animals.com,匹配結果就以黃色背景色標出。在本例中,你或許沒有得到正確的匹配,呵呵,那是正常的。為什嗎?答案見文章結尾。
拷貝粘貼
RegexBuddy能把正則式以多種字串格式拷貝出來。還是剛才那條正則式,根據需要,它可以被拷貝為:
?[Copy to clipboard]View Code PERL
'\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b' "\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b" '/\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b/i' |
具體的選項在copy菜單裡,如所示。你不必為單雙引號、正反斜線操心了。
在paste功能表項目中也有類似應用,不贅述。
正則式->代碼
如果你想把剛才編寫好的正則式應用在程式中,這裡還有一個選項:Use,介面見:
在上面的match和replace之間點擊,其代碼也相應自動調整;當選取不同的language時,代碼也會相應調整。它支援的語言格式為:
- C#
- Delphi(NET/Win32)
- Java/JavaScript/ECMAScript
- PCRE
- PHP
- Perl
- Python
- RealBasic
- Ruby
- VB
另外,它還有function選項,分別用以實現下述功能:
- If/else branch whethe the regex matches (part of) a string. If/else驗證正則式是否匹配字串(的一部分)。 最常用的功能。
- If/else branch whethe the regex matches a string entirely. If/else驗證正則式是否匹配整條字串。
- Get the part of a string matched by the regex. 取得字串中與正則式匹配的部分。Get the part of a string matched by a capturing group. 取得字串中所匹配的擷取的群組。這一條我也是剛剛知道,很有用喲。
- Get an array of all regex matches in a string.將字串中所有的匹配儲存到數組中。
- Iterate over all matches in a string。列出字串中所有的匹配項。(例如,在使用正則式’\w’來匹配字串’abc’時,本function列出的內容為’a',’b',’c’.)。單詞iterate的含義是重複。
- Comment with RegexBuddy’s regex tree. RegexBuddy的正則樹的注釋。
文本分割split
如果需要處理的文本是以某種分隔字元隔開的,而該種分隔字元恰好又能使用正則式描述,(例如html標籤),此時regexbuddy的split功能就可以大顯身手了。我隨便開啟了一個飯否網頁,對其原始碼中的訊息部分(<div id=“stream”>與</div>之內)的文本進行了處理,使用如下正則式刪除了所有的角括弧內容,只留下普通文本。
使用的正則式為:
?[Copy to clipboard]View Code PERL
軟體介面以及運行結果請見。
結尾:
關於本文開頭提出的小問題,細心的你或許一下子就能看出答案了!見:
只要選中Case insensitive選項中OK啦!如果你沒有找到,或許是因為該軟體是英文的,一時間您沒有注意到該選項;或者您對正則式還不太熟悉。
軟體下載
上文已經提到,其官網為www.regexbuddy.com,可以去下載其最新版試用。該軟體為商業軟體。
- 如果你偶然路過,嘗新而已,那隻需下載試用版即可;
- 如果你覺得好用、準備常用、手有餘錢、非正版不用,不妨花美金購買;
- 如果你喜歡它,同時你認為優秀的網路資源是應該和朋友免費分享的,從而想獲得該軟體的全功能免費版,好吧,我也成全你,請在本文後留言(附郵箱),我會把這個小東西的連結發給你(最新版為3.1.1,我手頭的全功能版為3.1.0,也足夠用了)。
下篇文章將要介紹另一款regex工具:PowerGREP,敬請期待。
本文為rex.zhasm原創,原文地址在http://iregex.org/blog/y2008/m04/d30/regexbuddyregexbuddy.html,可以在遵循CC協議的條件下轉載。