2007年10月7日 星期日

Regular expression(2)

這篇是對regular expression的解釋

$patterns = array("/((1920)\d{2})-(\d{1,2})-(\d{1,2})/", "/^\s*{(\w+)}\s*=/");

$replace = array("\\3/\\4/\\1", "$\\1=");print preg_replace($patterns, $replace, "{startDate} = 1969-6-19");

1./ 和 / 所夾的部分代表要比對的 pattern
2.^ 代表從字串開頭\s 代表 [\r\n\t\f\v] 換行、跳行、空白字串..

3.代表 0 or 1 or any\w 代表 [a-zA-Z0-9_]+ 代表 1 or any\d 代表 0-9 的數字
所以 " {startDate} =" 亦符合 /^\s*{(\w+)}\s*=/
4.((1920)\d{2}) 代表會搜尋 19 或 20 開頭、並且其後接有兩位數字的 pattern
像是: 1983、2006。

5.\d{2}代表數字需重複兩次,換個角度來說,可看成要尋找兩位數。

\d{1,2}則是至少出現一次、至多出現兩次,如:1、31、99..

6.\\3/\\4/\\1則表示將符合的模式的結果,取代為第三個set/第四個set/第一個set

\\1 表示符合 ((1920)\d{2}) \\2 表示符合 (1920) \\3 表示符合 (\d{1,2}) \\4 表示符合 (\d{1,2})
就本例而言: 1969-6-19 變成 6/19/1969

這篇範例可以讓我門了解到如何在php上表達以及使用regular expression和preg_replace

沒有留言: