《正則表達式經典實例(第2版)》——1.2 使用正則表達式進行查找和替換
本節書摘來自異步社區《正則表達式經典實例(第2版)》一書中的第1章,第1.2節,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看
1.2 使用正則表達式進行查找和替換
查找和替換(search-and-replace)對正則表達式來說是一個常見的任務。查找和替換的功能會接受一個目標字符串、一個正則表達式和一個替代字符串作為輸入。它的輸出則是把目標字符串中所有與正則表達式相匹配的字符串都替換為“替代文本”。
雖然替代文本(replacement text)並不是一個正則表達式,讀者也可以使用某些特殊的語法構造動態的替代文本。所有的流派都允許把正則表達式或者某個捕獲分組匹配到的文本,重新添加到替代字符串中。實例2.20和實例2.21會對此加以講解。有些流派還會支持把匹配的上下文添加到替代文本中,這會在實例2.22中講解。在第3章中,實例3.16將教你如何在代碼中為每個匹配都生成不同的替代文本。
眾多替代文本流派
由於不同正則表達式軟件開發人員的想法各異,所以出現了非常多的正則表達式流派,每種流派都擁有不同的語法和特性集。而這對於替代文本來說也是一樣的。事實上,替代文本擁有比正則表達式更多的流派。構造一個正則表達式引擎是非常困難的。大多數程序員都傾向於複用某個已有的引擎,因為在已有的正則表達式引擎上綁定查找和替換的功能是相當容易的。這樣做造成的結果是,如果正則表達式庫沒有內置查找和替換功能,它們之上就會存在許多替代文本的流派。
幸運的是,除了PCRE,本書中所有的正則表達式流派都擁有相對應的替代文本流派。PCRE中的這個問題卻使得使用基於其流派正則程序的程序員感到無所適從。開源PCRE庫中並不包含任何替換功能。結果是,所有基於PCRE的應用程序和編程語言都需要提供它們自己的查找和替換功能。大多數程序員都會試圖去複製已有的語法,但是從來不會按照完全相同的方式去做。
最後更新:2017-06-06 07:35:06