引用:
|
作者Adsmt
抱歉真的有,不要以為LINUX就是全世界了.....
很多編輯器自帶的 RE 語法和 LINUX, Perl 的標準並不同,當然你也可以說那是不入流的,但那確實存在。絕不是你說的 "在各不同的實作裡,除了版本不同有所擴展之外,基本的 match rule 都是完全一樣。"
不信去google一下ultraedit帶的三種不同版本的 RE 引擎,看看我說的對不對。
|
更正確的說在 regex 裡, ? 和 * 是數量詞,? 代表 zero or one,* 代表 zero or more。
用作 globbing 時,其實是 what to match + match how many 的複合資訊。
globbing 的 *,相當於 regex 的 .*
globbing 的 ?,相當於 regex 的 .
事實上就是有 POSIX regex,POSIX extended regex 和 PCRE 這三種標準。
grep, sed, awk 使用 POSIX (extended) regex、perl 後來獨立發展出一套強大的規則,包括 non-greedy qualifier、back-tracking reference 等等,後來才又 backport 成為 PCRE,讓 C 世界可以有比較人性化的 regex 可使用。
中心思想是,user 學了一套 regex,大家共同遵守這一套 regex 能夠通用在各個不同的軟體中,效益才會最大化。有一定的規範,user 就知道能夠期待什麼。
darkangel 說的歷史源流和基本概念是完全正確,各家 editor 自己要發明什麼奇怪的 regex 那不是標準。
我相信 DA 也絕不是以 linux 的自大心態在討論,而是想更清楚地說明事情而已。
(擴大來說其實 regex 和 linux 完全是分開的兩件事)