next up previous contents
Next: 字元處理 Up: Regular Express Previous: Regular Express   Contents

簡介-RE與glob

regular express是一種表示方法,用一些特殊的字元來表示一些電腦裡的特殊意 義,並且做為尋找的一種樣式比對 (pattern match)。 在MS dos/windows中也有相當的字元,例如 * 代表所有字所以你用del *.* 就可以砍 掉所有檔案,* 就叫wildcard字元。不過這在shell中的處理只是叫做globbing 並不是regular express。其實這當然是從Unix學去的,UNIX上的regular express更強大,而且適用於很多Unix 軟體裡面,像grep, sed, awk, vi, emacs perl...等等,可以說regular express就是使用UNIX的靈魂。 不過要來學unix請先把DOS那套不general東西給忘了。

C程式裡面處理regular express如果是POSIX的系統則用 regcomp() regexec(), System V的有regcmp(), regex(),BSD系統有re_comp(), re_exec()

在shell中的pattern match叫globbing,shell是不認得regular express的 通常用於路徑名的 ? * [] 的比對,對應用fnmatch()來處理。 不過這不是要談的重點,只是以後進階用C寫程式時可以想到用甚麼function call。

通常很多使用regular express的時後會用一對//夾住。
      /reg express/
來表示找到合乎reg express條件的字串。perl裡面說其實是
      m//
      s///
m表示match,s表是substitude,不過m可以省略不寫就變成//了 通常用法是m//命令 s///命令。命令常看到的有 不過也不一定,像grep命令就沒有,用雙引號就可以了。 anyway,只是很多都是這樣表示。

Cyril Huang 2002-06-14