引用:
|
作者Adsmt
Regular Expression不同的工具會有不同的表示及規則,沒有一套標準。所以學起來會很亂。
像是有的用 "." 代表單一任意字元,有的用 "?"
有的 +, * 本身就代表重複字元,有的則只代表「重複」,也就是有的用 "+", 其實和另一種工具的 ".+" 同義。
|
re 的 ? 從來都不是匹配 any character,從 posix re, extension, 或是 pcre 到各平台不同實作,所有的 ? 基本上都是 greedy switch,不是 match any character。
有人會說,那我 ls 的 ? 是 match any character 啊,* 是 match any string,很抱歉,那東西叫 glob/wildcard,別把這兩者搞混,真不懂我在講什麼,請在 linux 下執行 man 7 glob
http://man7.org/linux/man-pages/man7/glob.7.html
引用:
Note that wildcard patterns are not regular expressions, although they are a bit similar.
|
re 在各不同的實作裡,除了版本不同有所擴展之外,基本的 match rule 都是完全一樣。pcre > re ex > re,大都是一層層堆上去的,也就是 perl re 跟 pcre 提供最多功能,re ex 次之,posix re 最少。
至於各不同應用程式之間實作最大的差異主要是在於 \d 這類跳脫字元的定義,所以我寫 re 一直都會避開使用 \d 這類的寫法,而是用 [0-9] 這種標準寫法。
引用:
|
作者fpe
蠻高招的 
|
因為我寫過啊... 我 20 年前用 x86 asm 寫的編碼程式就這樣寫,因為我不想要讓人用 pctools 改我程式的 copyright 字串,順便上點會當掉 debug/s-ice 的保護...