瀏覽單個文章
darkangel
Major Member
 
darkangel的大頭照
 

加入日期: Aug 2001
文章: 211
引用:
作者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 看起來是好工具,不過我沒裝,還有沒特別需要還是盡量用通用的定義吧。
     
      
__________________
滿招損 謙受益
舊 2013-08-29, 10:55 PM #31
回應時引用此文章
darkangel離線中