讀古今文學網 > 精通正則表達式(第3版) > 作為語言組件的正則表達式 >

作為語言組件的正則表達式

Regular Expressions as a Language Component

Perl語言引人注目的特性之一就是,正則表達式在語言之中支持完美地內建。Perl沒有提供獨立的正則表達式應用函數,它的正則表達式的運算符,包含在構成語言的其他豐富的運算符和結構之中。

Perl具有強大的運用正則表達式的能力,人們可能認為,這需要數量繁多的運算符,但是,Perl事實上只提供了四個與正則表達式有關的運算符,以及少量的相關元素(見表7-1)。

表7-1:Perl中與正則表達式相關的對象概覽

Perl的功能非常強大,但它提供的運算符數量非常少,這樣有利也有弊。

Perl的長處

Perl's Greatest Strength

Perl最大的優勢可能在於,Perl的運算符和函數提供了豐富的選項。根據應用場合的不同,它們的行為也不同,當然,這通常是執行者在那種場合自然想到的操作。O』Reilly 的Programming Perl說得很絕對:「總的來說,Perl的運算符可以做你希望的任何事情……」。正則匹配運算符 m/regex/提供了許多神奇的功能,會根據應用的場合、方式以及修飾符的不同而變化。

Perl的短處

Perl's Greatest Weakness

表達能力太強,也是 Perl 最大的毛病之一。哪怕只是進行極小的修改,也有數不清的特殊情況、條件和場合在你眼皮底下發生變化,但卻不會通知你——不經意之間就切換到另一種應用場合(注2)。在Programming Perl這本書中,上面那句話的下半句是「只是缺乏一致性(consistency)」。當然,對計算機科學來說,固定、一致而值得依賴的接口是可取的。Perl 的強大功能在有經驗的用戶手裡可能是強大的武器,但情況似乎是,你的 Perl 技能不斷增長,是以不斷地射傷自己的腿腳為代價的。