關(guān)于windows下的正則表達(dá)式工具,這里推薦的是:RegexBuddy和PowerGREP。在linux下,也有好用的正則表達(dá)式工具,例如grep的兄弟們,只不過是都是基于命令行的。而這兩款windows下的小工具,其突出特點是可視化,允許嘗試和預(yù)覽,極大地方便了使用者。
RegexBuddy:網(wǎng)址是http://m.elephantinaurance.com/soft/16129.html。在編寫正則式時,它提供可視化的支持、提示、調(diào)試方面的便利;在使用正則表達(dá)式時,它無私地將正則式轉(zhuǎn)換為多種語言的字串,還提供了代碼輸出功能。正則式助手,該稱號名副其實。
基本界面
正則式的基本功能無外乎搜索和替換。在本文中,我們使用匹配Email的正則式,代碼如下:
\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
此時,RegexBuddy的界面如圖:
在點擊“Explain Token”時,能對當(dāng)前的正則式片斷的作用作出詳細(xì)解釋,例如當(dāng)你把光標(biāo)移動到\b上再點擊Explain Token,就會激活幫助文檔,自動定位到Word Boundaries這一段。
如果想對剛才編寫的這條正則式進行測試和驗證,可以點擊“Test”進行測試。這時,在下邊的文本框輸入所需要匹配測試的文字,例如dog@animals.com,匹配結(jié)果就以黃色背景色標(biāo)出。在本例中,你或許沒有得到正確的匹配,呵呵,那是正常的。為什么?答案見文章結(jié)尾。
拷貝粘貼
RegexBuddy能把正則式以多種字符串格式拷貝出來。還是剛才那條正則式,根據(jù)需要,它可以被拷貝為:
'\\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菜單項中也有類似應(yīng)用,不贅述。
正則式->代碼
如果你想把剛才編寫好的正則式應(yīng)用在程序中,這里還有一個選項:Use,界面見下圖:
在上面的match和replace之間點擊,其代碼也相應(yīng)自動調(diào)整;當(dāng)選取不同的language時,代碼也會相應(yīng)調(diào)整。它支持的語言格式為:
C#
Delphi(NET/Win32)
Java/JavaScript/ECMAScript
PCRE
PHP
Perl
Python
RealBasic
Ruby
VB
另外,它還有function選項,分別用以實現(xiàn)下述功能:
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.將字串中所有的匹配保存到數(shù)組中。
Iterate over all matches in a string。列出字串中所有的匹配項。(例如,在使用正則式’\w’來匹配字串’abc’時,本function列出的內(nèi)容為’a',’b',’c’.)。單詞iterate的含義是重復(fù)。
Comment with RegexBuddy’s regex tree. RegexBuddy的正則樹的注釋。
文本分割split
如果需要處理的文本是以某種分隔符隔開的,而該種分隔符恰好又能使用正則式描述,(例如html標(biāo)簽),此時regexbuddy的split功能就可以大顯身手了。我隨便打開了一個飯否網(wǎng)頁,對其源代碼中的消息部分(<div id=“stream”>與</div>之內(nèi))的文本進行了處理,使用如下正則式刪除了所有的尖括號內(nèi)容,只留下普通文本。
使用的正則式為:
<[^>]+>
軟件界面以及運行結(jié)果請見下圖。
結(jié)尾:
關(guān)于本文開頭提出的小問題,細(xì)心的你或許一下子就能看出答案了!見下圖:
只要選中Case insensitive選項中OK啦!如果你沒有找到,或許是因為該軟件是英文的,一時間您沒有注意到該選項;或者您對正則式還不太熟悉。