《正則表達式經典實例(第2版)》——1.3 正則表達式工具
本節書摘來自異步社區《正則表達式經典實例(第2版)》一書中的第1章,第1.3節,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看
1.3 正則表達式工具
除非已經擁有了相當長的使用正則表達式編程的經驗,否則建議你先在一個工具中試驗一下正則表達式,而不是直接在源代碼中使用它們。本章和第2章中提供的正則表達式示例都是原始正則表達式,其中並不包含編程語言(即使是Unlx shell)所必需的額外的轉義符號。因此可以直接把這些正則表達式輸入到一個應用程序的查找框中。
第3章講解如何把正則表達式整合到源代碼中。把一個字麵的(literal)正則表達式作為一個字符串引用,會讓它更加難懂,因為字符串的轉義規則會與正則表達式的轉義規則混雜在一起。我們在實例3.1才會開始講解這些內容。一旦理解了正則表達式的基本知識,你就能夠從無數的反斜杠的背後看到“森林”。
本節要介紹的工具同樣會提供調試和語法檢查的功能,以及在絕大多數編程環境中並不會獲得的其他反饋信息。因此,在開發應用程序時研究正則表達式的時候,你可能會發現在把一個複雜的正則表達式插入到程序中之前,首先使用這類工具試驗一下可能會非常有用。
1.3.1 RegexBuddy
在本書寫作之時,RegexBuddy(如圖1-1所示)是用來創建、測試和實現正則表達式功能最為豐富的工具。它擁有獨特的能力,可以仿真本書中講到的所有正則表達式的流派,甚至可以在不同的流派之間進行轉換。
RegexBuddy是由本書作者之一Jan Goyvaerts設計和開發的。設計和開發RegexBuddy使Jan成為了正則表達式的專家;由於使用了RegexBuddy,本書的另一位作者Steven迷戀上了正則表達式,最終向O’Reilly出版社建議出版這本書。
如果覺得屏幕截圖(如圖1-1所示)看起來比較繁雜,那是因為我們特意並排列出了大多數的麵板,用來展示RegexBuddy的強大功能。實際上默認的視圖會把所有的麵板都很簡潔地壓縮成一行標簽。另外,你還可以選擇把一些麵板拖動到另外一台顯示器上。
要想嚐試本書中給出的某個正則表達式,隻需要把它鍵入RegexBuddy窗口上端的編輯框中。RegexBuddy會自動對正則表達式應用語法著色,從而使錯誤和括號不匹配的情形更容易看清楚。
在鍵入正則表達式的同時,Create麵板會自動構造一個用英語描述的詳細分析。在該正則表達式的樹中雙擊任意的描述,可以編輯正則表達式的對應部分。你還可以手動向正則表達式中添加新的部分,或者通過單擊Insert Token按鈕從菜單中選擇想要的操作。例如,如果不記得肯定型順序環視(positive lookahead)的複雜語法,可以依靠RegexBuddy來幫助添加正確的字符。
在Test麵板上可以鍵入或者粘貼一些示例文本。當Highlight按鈕激活的時候,RegexBuddy會自動高亮顯示與正則表達式匹配的文本。
最經常會用到的一些按鈕如下。
單擊上述任意一個按鈕,並選擇Update Automatically(自動更新),就可以讓RegexBuddy在編輯正則表達式或者目標文本的時候,同步顯示動態結果。
要想看到正則表達式到底會(或者不會)如何執行,在Test麵板上單擊一個高亮顯示的匹配或者是正則表達式沒有能夠產生匹配的地方,然後單擊Debug按鈕。RegexBuddy會轉到Debug麵板上,逐步展示整個匹配的過程。單擊調試器輸出的任意地方,就可以查看哪些正則表達式記號匹配了你所單擊的文本。單擊正則表達式則可以在調試器中高亮顯示正則表達式的該部分。
在Use麵板上,選擇你最喜歡的編程語言。然後,選擇一個功能就可以立即生成實現該正則表達式的源代碼。RegexBuddy的源代碼模板可以使用內置的模板編輯器進行完整編輯。你還可以添加新的功能甚至是新的語言,或者是修改內置的模板。
如果想在一個更大的數據集上測試正則表達式,轉到GREP麵板上就可以在任意數量的文件和文件夾上進行查找(以及替換)。
當你在維護的源代碼中發現一個正則表達式的時候,可以把它複製到剪貼板上,包括其中用於分隔的引號和斜杠。在RegexBuddy中,單擊頂端的Paste按鈕,並選擇你的編程語言字符串風格。該正則表達式就會以原始正則表達式的形式出現在RegexBuddy中,而字符串字麵量(string literal)必需的額外引號和轉義符號都被去掉了。使用頂部的Copy按鈕就可以創建一個按照你所要求的語法的字符串,然後可以把它重新粘貼回源代碼中。
經驗增長以後,用戶就可以在Library麵板上構建起一個便於使用的正則表達式庫。在保存正則表達式的時候,別忘了添加對應的詳細的描述與測試對象。即使是對專家來說,正則表達式也可能會是難以捉摸的。
如果確實無法搞明白一個正則表達式是怎麼回事,可以單擊Forum麵板,然後單擊Login按鈕。如果已經購買了RegexBuddy,就會出現登錄屏幕。單擊OK,就會立即連接到RegexBuddy用戶論壇中。Steven和Jan經常會出現在這個論壇回答用戶的問題。
1.3.2 RegexPal
RegexPal(如圖1-2所示)是由本書的作者之一Steven Levithan所創建的在線正則表達式測試工具。你所需要的僅僅是一個版本較新的網頁瀏覽器。RegexPal全部是由JavaScript編寫的。因此,它隻支持JavaScript正則流派,這與你用來訪問它的網頁瀏覽器中所實現的正則表達式一樣。
現在,你可以在中間的大輸入框中鍵入或者粘貼一段樣本文本。RegexPal會自動高亮與正則表達式匹配的文本。
在這個工具中並不需要單擊任何按鈕,因此RegexPal是最為方便的在線正則表達式測試工具之一。
1.3.3 RegexMagic
RegexMagic(如圖1-3所示)是另一款由Jan Goyvaerts設計和開發的工具軟件。RegexBuddy的目標是可以更為容易地處理正則表達式語法,而RegexMagic則主要設計給那些不願意接觸正則表達式語法,更不肯讀500頁正則表達式圖書的人。
在RegexMagic中,可以基於樣本文本和RegexMagic的高級別模式描述想要匹配的文本。屏幕截圖中演示了隻需選擇“Email address”(電子郵件地址)模式,即可得到一個匹配電子郵件地址的正則表達式。你也可以自定義模式以限製允許的用戶名和主機域名,並且可以選擇是否允許或必需mailto:前綴。
既然選擇了讀這本書,那你已經身處精通正則表達式的道路上。RegexMagic不應成為你使用正則式的主要工具,但在一些情況下它仍然十分便利。在實例6.7中我們講解了該如何創建一個正則表達式來匹配一個範圍內的數值字符串。盡管用正則表達式來判斷一個數值字符串是否在某個範圍內並不是最好的方法,但有時隻能使用正則表達式來解決問題。內置正則引擎的應用程序遠比內置腳本語言的多得多。雖然實例6.7中描述的技術沒有什麼難度,但手動完成這項工作還是十分枯燥乏味。
試想一下,如果要匹配的十進製數字位於2 147 483 648(231)到4 294 967 295(232–1)的範圍內,而不是實例6.7中那些簡單的示例。在RegexMagic中,隻需選擇“Integer”(整數)模式,選擇“decimal”(十進製)選項,並將範圍限製在2147483648..4294967295。在“strict”(嚴格)模式下,RegexMagic會立即生成如下“望而生畏的正則式”:
\b(?:429496729[0-5]|42949672[0-8][0-9]|4294967[01][0-9]{2}|429496[0-6]↵
[0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|429[0-3][0-9]{6}|42[0-8]↵
[0-9]{7}|4[01][0-9]{8}|3[0-9]{9}|2[2-9][0-9]{8}|21[5-9][0-9]{7}|214[89]↵
[0-9]{6}|2147[5-9][0-9]{5}|214749[0-9]{4}|214748[4-9][0-9]{3}|2147483↵
[7-9][0-9]{2}|21474836[5-9][0-9]|214748364[89])\b
正則選項:無
正則流派:.NET、Java、JavaScript、PCRE、Perl、Python、Ruby
1.3.4 更多正則表達式在線測試工具
創建一個簡單的正則表達式在線測試工具並不困難。如果你擁有一些基本的Web開發技能,那麼隻需要第3章中的信息就足以構建自己的正則表達式工具了。成百上千的人已經這樣做過,其中有些人還添加了一些額外的功能,值得加以介紹。
1.RegexPlanet
RegexPlanet(https://www.regexplanet.com/
)是由Andrew Marcuse開發的網站。它出名的原因是它允許用戶在很多種正則庫中測試正則式,比我們知道的任何一個網站都要多。在首頁上可以找到這些語言的測試工具鏈接,包括Java、JavaScript、.NET、Perl、PHP、Python和Ruby。它們都使用相同的基本界麵。隻有選項列表依據各編程語言而定。圖1-4演示的是.NET版本。
在“regular expression”文本框鍵入或粘貼正則表達式。如果想要測試“查找和替換”,在“replacement”文本框中粘貼替代文本。你可以在任意數量的不同目標字符串上測試正則表達式,將目標字符串粘貼到各“input”文本框中即可。如果需要5個以上文本框,單擊“more inputs”。雖然“regex”和“input”文本框隻會顯示一行,但是可以鍵入或粘貼多行文本。滾動箭頭顯示在文本框右側。
輸入完後,點擊“test”按鈕將所有字符串發送到regexplanet.com服務器。結果頁麵(如圖1-4所示)會在頂部列出所有測試結果。前兩行顯示你的輸入,餘下各行顯示不同函數的執行結果。站點支持的各編程語言的結果格式各不相同。
2.regex.larsolavtorvik.com
Lars Olav Torvik在https://regex.larsolavtorvik.com
(如圖1-5所示)建立了一個非常優秀小巧的在線正則表達式測試工具。
首先,用戶可以單擊在頁麵上端的流派名稱來選擇正在使用的正則表達式流派。Lars提供了PHP PCRE、PHP POSIX和JavaScript。PHP PCRE,也就是本書中介紹的PCRE正則流派,是由PHP的preg函數使用的。POSIX是由PHP的ereg函數使用的是一種較陳舊且功能有限的正則表達式流派,在本書中並沒有討論這種流派。如果用戶選擇JavaScript,那麼使用的就是你的瀏覽器中所實現的JavaScript正則表達式。

在Pattern域中輸入正則表達式,並在Subject域中輸入目標文本。稍等片刻,在Matches域中就會顯示高亮之後的正則表達式匹配的目標文本。Code域中顯示把正則表達式應用到目標文本之上的一行源代碼。把這段代碼複製並粘貼到代碼編輯器中可以節省大量時間,因為不必再費力氣手動把正則表達式轉換成一個文本字符串。該代碼返回的任何字符串或者數組都會顯示在Result域中。因為Lars使用了Ajax技術來構建他的網站,所以所有的流派都隻需片刻就可以更新其結果。如果要使用該工具,電腦就必須保持聯網狀態,因為PHP是在服務器端進行處理的,而不是在瀏覽器中。
第二列給出了正則表達式命令和選項列表。這些依據你所選擇的正則表達式流派而定。正則表達式命令通常包括匹配、替換和拆分操作。正則表達式選項包含常見的選項,如不區分大小寫,以及與實現有關的一些選項。這些命令和選項會在第3章中講解。
3.Nregexhttps://www.nregex.com
(如圖1-6所示)是由David Seruyange開發的一個很簡明的在線正則表達式測試工具。它支持.NET 2.0的正則流派,.NET 3.0、3.5和4.0也同樣適用。
這個網頁的布局看起來有些讓人費解。在Regular Expression標簽下麵的域中輸入正則表達式,並且使用其下的複選框來設定正則表達式選項。然後在底部的大輸入框中鍵入目標文本,替換掉默認的If I just had $5.00 then "she" wouldn't be so @#$! mad.。如果你的目標是一個網頁的話,那麼可以把它的URL鍵入Load Target From URL域中,然後單擊該輸入域之下的Load按鈕。如果目標是在硬盤上的一個文件,那麼單擊Browse1FF(瀏覽)按鈕,找到想要使用的文件,然後單擊該輸入域之下的Load按鈕。

目標文本會重複出現在網頁中心的Matches & Replacements域中,其中正則表達式的匹配會高亮顯示。如果在Replacement String域中敲入一些內容,那麼這裏就會顯示查找和替換後的結果。如果正則表達式是非法的,那麼就會出現…(省略號)。
正則表達式的匹配是通過在服務器上運行的 .NET代碼來完成的,所以也需要保持聯網狀態才能使用該網站。如果發現自動更新的速度比較慢的話,那可能是因為目標文本非常長,選中正則表達式輸入域之上的Manually Evaluate Regex複選框,就會出現Evaluate按鈕。單擊該按鈕就可以更新Matches & Replacements的顯示。
4.Rubular
Michael Lovitt在https://www.rubular.com
(如圖1-7所示)建立了一個最小功能集的在線正則表達式測試工具。寫作本書時,它允許用戶在Ruby 1.8.7和Ruby 1.9.2間選擇。這讓你可以同時測試本書使用的Ruby 1.8和Ruby 1.9的正則表達式流派。

在Your regular expression下麵兩個正斜杠之間的文本框中輸入正則表達式。你可以通過在第二個斜杠之後的小輸入框中鍵入一個i來開啟不區分大小寫選項。相類似,如果需要的話還可以在同一個輸入框中鍵入一個m來開啟“點號匹配換行符”的選項。而鍵入im則會同時開啟這兩個選項。如果你是剛剛接觸Ruby的話,可能會覺得這些約定看起來對用戶有點兒不夠友好,但是它們與用來在Ruby代碼中指定正則表達式時所使用的/regex/im語法是一致的。
在Your test string文本框中輸入或者粘貼目標文本。在右邊會出現一個新的Match results文本框,用來顯示所有正則表達式匹配高亮顯示之後的目標文本。
5.myregexp.com
Sergey Evdokimov為Java開發人員創建了多個正則表達式測試工具。在https://www.myregexp.com
網站主頁(如圖1-8所示)提供了其中一個在線正則表達式測試工具。它是一個在瀏覽器中運行的Java applet(小程序)。在你的計算機上需要安裝Java 4(或更新版本)運行時。這個小程序使用java.util.regex包來運行正則表達式,這個包是在Java 4中新引入的。在本書中,“Java”正則流派指的就是這個包。

在Regular Expression輸入框中輸入正則表達式。使用Flags菜單來設置你想用的正則選項。其中三個選項也可以直接使用複選框。
如果想要測試存在於Java代碼字符串變量中的正則表達式的話,可以把整個字符串都複製到剪貼板上。在myregexp.com測試工具中,單擊Edit菜單,然後選擇Paste Regex from Java String(粘貼來自Java字符串的正則式)。完成了正則表達式的編輯之後,在同一個菜單中選擇Copy Regex for Java Source(複製Java代碼所使用的正則式)。Edit菜單對於JavaScript和XML也有類似的命令。
在正則表達式下麵,有4個標簽,可以用來運行4種不同的測試。
1.3.5 更多桌麵正則表達式測試工具
1.Expresso
Expresso(不要把它和富含咖啡因的濃咖啡espresso混為一談)是用來創建和測試正則表達式的一個 .NET應用程序。可以從https://www.ultrapico.com/Expresso.htm
下載它。你的計算機上必須安裝有.NET Framework 2.0或者更新版本。
從網站下載的是一個60天免費試用版。在試用期過後,必須注冊該軟件,否則Expresso就(大體上)無法使用了。注冊碼通過電子郵件發送。
Expresso會顯示一個類似圖1-9所示的屏幕。用來輸入正則表達式的Regular Expression文本框是始終保留的。它並不會進行任何語法著色。Regex Analyzer框則會為正則表達式自動構造一個簡要的英語語言分析。它同樣是始終保留的。
在Design Mode(設計模式)下,可以在屏幕的底部設置諸如“Ignore Case”(忽略大小寫)這樣的匹配選項。屏幕空間的大部分被一排標簽頁所占據,可以在此選擇想要插入的正則表達式記號。如果你擁有兩個顯示器,或者一個大的顯示器,可以單擊Undock按鈕來使這行標簽頁都懸浮起來。接著仍然可以在另一模式(Test Mode)下構建正則表達式。
在Test Mode(測試模式)下,可以在屏幕左下角輸入或者粘貼示例代碼。然後,單擊Run Match按鈕,就可以在Search Results文本框中得到所有匹配的列表。這裏並不會對示例文本應用任何的高亮顯示。在結果中單擊一個匹配就可以選中在示例文本中對應的匹配。
Expression Library會給出樣例正則表達式的列表,以及最近使用的正則表達式列表。每次按下Run Match的時候,當前的正則表達式都會添加到這個列表中,可以通過在主菜單工具條上的Library菜單來編輯這個表達式庫。
2.The Regulator
可以從https://sourceforge.net/projects/regulator
下載的The Regulator對佩戴水中唿吸器潛水或是使用煤氣罐來說並不安全2FF,它是另外一個用來創建和測試正則表達式的 .NET應用。它的最新版本要求 .NET 2.0或者更新版本。你還可以下載到用於 .NET 1.x的較早版本。The Regulator是開源軟件,不需要付錢或者注冊。
The Regulator會在一個屏幕(如圖1-10所示)中完成所有的工作。New Document標簽頁是用來輸入正則表達式的地方。語法著色會自動生效,但是在正則表達式中的語法錯誤卻不會突出顯示。單擊鼠標右鍵可以從一個菜單中選擇想要添加的正則表達式記號,也可以通過主工具條之上的按鈕來設置正則表達式選項。這些圖標看起來會有些費解,可以讓鼠標稍作停留,等待提示出現,就能看到每個按鈕可以設置什麼選項了。
在正則表達式區域下麵的右邊,單擊Input按鈕就會顯示可以用來粘貼樣本文本的區域。如果想要進行查找和替換操作的話,可以單擊Replace with按鈕來鍵入替代文本。在正則表達式下麵偏左的地方,你會看到該正則表達式操作的結果。它的結果不會進行自動更新;必須單擊工具條中的Match、Replace或Split按鈕才能更新結果。而且,它也不會對輸入應用高亮顯示。單擊結果中的一個匹配,可以看到要它在目標文本中的位置。
Regex Analyzer麵板展示的是對正則表達式進行的簡單的語言分析,它既不是自動的,也不能逐步互動。要想更新這個分析結果,需要在View菜單中選擇Regex Analyzer,即使它已經顯示也需要這樣做。如果僅僅單擊分析結果,隻有文本指針會移動。
3.SDL Regex Fuzzer
SDL Regex Fuzzer這個含混的(fuzzy)名字沒有明顯表示出它的用途。微軟公司宣稱它是“幫助測試正則表達式中潛在的拒絕服務漏洞的工具”。可以從https://www.microsoft. com/ n-us download details.aspx?id=20095
免費下載。需要安裝.NET 3.5來運行它。
SDL Regex Fuzzer真正所做的是,檢查是否存在一個可以使正則表達式需要指數級時間來執行的目標字符串。本書中我們稱這為“災難性回溯”。我們會在實例2.15中詳細講解這一點,並提供了一種可用的解決方案。簡單說,引起災難性回溯的正則式會讓應用程序停止響應或是崩潰。如果程序是服務器應用,這可能會導致拒絕服務攻擊。
圖1-11顯示了SDL Regex Fuzzer的一個測試結果。在Step 1中我們粘貼了實例2.15中的正則表達式。因為這個表達式無法匹配非ASCII碼字符,所以無需在Step 2中選擇All ASCII characters (所有ASCII碼字符) 這一選項。否則,則應選擇。在Step 3中我們保留默認的100次循環。單擊Step 4的Start按鈕,大約5秒後,SDL Regex Fuzzer顯示了一個樣例字符串,這個字符串會使正則式在.NET 3.5中執行失敗。
遺憾的是,這個工具的實用性非常有限,因為它隻支持.NET正則語法的一個小子集。而當我們試圖測試實例2.15中的原始解決方法時,遇到了圖1-12所示的錯誤消息,即便該正則式明顯無法通過測試。正確理解實例2.15中所討論的概念,是確保應用程序不被複雜的正則表達式拖垮的唯一途徑。
1.3.6 grep
grep這個名字是從g/re/p命令推衍而來的,這個命令在Unix文本編輯器ed中用於正則表達式查找,而ed則是最早支持正則表達式的應用之一。該命令非常流行,結果所有的UNIX係統中現在都包含一個專門的grep工具以便在文件中進行正則表達式查找。如果你在使用UNIX、Linux或者OS X,那麼在終端窗口中鍵入man grep命令就可以學習這個命令的全部知識。
下麵的3個工具是用來實現與grep相同的功能的Windows應用程序,而且它們還添加了額外的功能。
1.PowerGREP
由本書作者之一Jan Goyvaerts所開發的PowerGREP,可能是在Microsoft Windows平台上可用到的功能最為豐富的grep工具(如圖1-13所示)。PowerGREP使用一種定製的正則表達式流派,它兼具本書中介紹的各流派中最好的特性。這種流派在RegexBuddy中稱為“JGsoft”。
要執行一次快速的正則表達式查找,隻需在Action菜單中選擇Clear,並在Action麵板上的Search框中輸入正則表達式。在File Selector麵板上單擊一個文件夾,然後在File Selector菜單中選擇Include File or Folder或Include Folder and Subfolders。接著在Action菜單中選擇Execute就可以進行查找。
要執行一次查找和替換操作,在清除了上述操作之後,在Action麵板左上角處的action type下拉列表中選擇search-and-replace。Search框下即會顯示一個Replace框,在這裏輸入替代文本。其餘所有的步驟都與查找功能完全相同。
PowerGREP具有獨特的能力,可以在同一時刻使用最多5個正則表達式列表,在每個列表中可以包含任意數目的正則表達式。雖然上麵兩段已經給出了足夠的信息,讓你可以像使用其他任何grep工具一樣執行一些簡單的搜索,但是要發揮PowerGREP的全部潛力則需要多花點兒時間通讀一下該工具的詳細文檔。
PowerGREP可以在Windows 2000/XP/Vista/7/8上運行。可以從https://www.powergrep.com/PowerGREPCookbook.exe
下載免費評估版本。除了保存結果和庫之外,試用版包含了可以實際使用15天的全部功能。盡管試用版不能保存在Results麵板上顯示的結果,但是它也和完整版本一樣,會執行查找和替換操作修改所有文件。
2.Windows Grep
Windows Grep(https://www.wingrep.com
)是在Windows平台上最古老的grep工具之一。它的年代可以從它的用戶界麵中看出一點兒端倪(如圖1-14所示),但它的確可以實現他所標榜的功能。它支持一種功能有限的正則表達式流派,這種流派被稱作POSIX ERE。對於它支持的功能,它所使用的語法與本書中介紹的流派是一樣的。Windows Grep是一個共享軟件,這意味著你可以免費下載它,但是如果希望長時間使用,就需要付費。
要想執行搜索,在Search菜單中選擇Search。接下來出現的屏幕將會根據你在Options菜單中所選擇的是Beginner Mode(初學者模式)或是Expert Mode(專家模式)而有所不同。初學者會看到逐步向導,而專家則會看到標簽頁對話框。
設置好搜索之後,Windows Grep會立即執行它,並向你展示一個在其中找到匹配的文件列表。單擊一個文件就可以在底部麵板中看到其中的匹配,而雙擊一個文件會打開該文件。在View菜單中選擇All Matches會使底部麵板顯示所有內容。
如果想要執行查找和替換,隻需要在Search菜單中選擇Replace即可。
3.RegexRenamer
RegexRenamer(如圖1-15所示)實際上並不是一個grep工具。它並不查找文件的內容,而是查找和替換文件的名稱。可以從https://regexrenamer.sourceforge.net
下載該工具。RegexRenamer要求安裝Microsoft .NET Framework2.0或者更新版本。
在Match框中鍵入正則表達式,並在Replace框中鍵入替代文本。單擊/i可以打開不區分大小寫選項,單擊/g則會替換每個文件名中的所有匹配,而不隻是替換第一個匹配。選擇/x會打開寬鬆排列(free-spacing)的語法選項,這並不是很有用,因為隻有一行空間可以輸入正則表達式。
使用左邊的樹可以選擇包含你想要重命名的文件的文件夾。在右上角,可以設置一個文件名通配符掩碼或者正則表達式過濾器。這可以限製“查找和替換”正則表達式所應用的文件列表。與其試圖隻使用一個正則表達式來完成所有工作,更方便的做法是用一個正則表達式進行過濾,用另一個正則表達式進行替換。
1.3.7 常見的文本編輯器
大多數現代的文本編輯器都至少支持基本的正則表達式。在查找或者查找和替換麵板上,你通常會發現一個複選框可以打開正則表達式模式。有些編輯器,如EditPad Pro,也會使用正則表達式來完成各種文本處理的功能,如語法高亮顯示或是類和函數列表等。每個編輯器所帶的文檔會詳細講解所有這些功能。下麵列出了一些支持正則表達式的常用文本編輯器。
- BBEdit(PCRE)
- Boxer Text Editor(PCRE)
- Dreamweaver(JavaScript)
- EditPad Pro(組合了本書中介紹的流派中最好部分的一種定製流派;在RegexBuddy中稱作是“JGsoft”)
- Multi-Edit(PCRE,需要選擇“Perl”選項)
- Nisus Writer Pro(Ruby 1.9 [Oniguruma])
- Notepad++(PCRE)
- NoteTab(PCRE)
- UltraEdit(PCRE)
- TextMate(Ruby 1.9 [Oniguruma])
最後更新:2017-06-06 07:35:14