設想、驗證、比較、總結這無窮迴圈貫穿於學習Regex的始終。為了便捷直觀地看到一個Regex作用於一段文本的匹配結果,使用PHP寫了一個簡易的Regex測試載入器。Regex的匹配使用PHP中的preg_match函數。頁面中一個textarea用來輸入待搜尋的文本,一個edit用來輸入Regex。主要代碼如下:
$pattern = '/'.$_GET['pattern'].'/';<br />$result = "";<br />//preg_match返回後,$matches[0][0]是匹配的字串,$matches[0][1]是匹配的字串的開始位置<br />while(preg_match($pattern, $input, $matches, PREG_OFFSET_CAPTURE)) {<br />$tmp = substr($input, 0, $matches[0][1]);<br />$result .= htmlspecialchars($tmp);<br />$result .= "<font color=RED style="background:yellow"><strong>";<br />$result .= htmlspecialchars($matches[0][0]);<br />$result .= "</strong></font>";<br />$input = substr($input, $matches[0][1]+strlen($matches[0][0]));<br />$c++;<br />}<br />$result .= htmlspecialchars($input);
例如:
文本:
<body>
<h1>h1</h1> <h2>h2</h2> <h3>h34</h4>
</body>
Regex:<[Hh]([1-6])>.*?<//[Hh]/1>
匹配後:
<body><h1>h1</h1> <h2>h2</h2> <h3>h34</h4></body>
2 matches