Next: 字元處理
Up: Regular Express
Previous: Regular Express
  Contents
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///命令。命令常看到的有
- p -
>
print 通常也不用寫
- d -
>
delete 這通常是跟在m命令後 符合的就砍掉
- c -
>
confirm 通常用在s命令 詢問是不是真要取代
- g -
>
global 通通換 因為match到時內定只有第一個符合的有效
- i -
>
ignore 不管大小寫
不過也不一定,像grep命令就沒有,用雙引號就可以了。
anyway,只是很多都是這樣表示。
Cyril Huang
2002-06-14