引用:
|
作者goddesschi
另外還有一點比較奇怪的
.*Test=([\w-\.]+),.*Value=([\w-\.]+),.*Expected=([\w-\.]+),.*Resolution=([\w-\.]+),.*Lux=([\w-\.]+)<.*
這個規則在expresso上面run沒有問題但是拿到ultraedit就出現語法錯誤
這種情況是為什麼?
|
我說過不同工具會有差異性,RE 也不是只有 Perl 系,還有 POSIX RE, POSIX Extended RE 等等,而且各工具定義也不盡相同,如果每用一種都要去查特殊跳脫字元用法就太浪費時間了,所以為什麼我給你的 pattern 都避開使用『工具自定義特殊符號』而使用通用的 [0-9] 這種表示方式,我記得 UE 裡 [\w] 等於 [A-Za-z],所以我看到 vxr 給 \w 馬上就認為定義不同,花不到一分鐘查了一下 expresso,果然在 expresso 裡 \w 是 Match any alphanumeric character 等於 [0-9A-Za-z]。
參考
http://www.codeproject.com/Articles...-Regex-Tutorial
所以你不能在 UE 裡用 \w 來 match [0-9],
此外你不能用 [\w-\.] 這意思就變成了 [0-9A-Za-z-\.] 當然會語法錯誤,你要在 [] 裡單獨 match - 要用 [\-] 或是像我前面給的小技巧 [-0-9] 放在最前面。(我故意這樣放是要讓你想為什我會這樣寫,全都讓我說穿就沒意思了)
多練習吧, expresso 看起來是好工具,不過我沒裝,還有沒特別需要還是盡量用通用的定義吧。