名稱：
	regexp - 正規表示式處理程式 (regular expression handler)。
語法：
	int regexp( string str, string pattern );
	string array regexp( string array lines, string pattern );
	string array regexp( string array lines, string pattern, int flag );

	整數 regexp( 字串 字串, 字串 樣式 );
	字串 陣列 regexp( 字串 陣列 行, 字串 樣式 );
	字串 陣列 regexp( 字串 陣列 行, 字串 樣式, 整數 旗標 );
用法：
	第一種語法中，如果字串「str」含有符合正規表示式「pattern」的子字串
	(substring) 時，regexp() 傳回真〈即 1〉。如果想要比對是否完全符合，
	「pattern」應該以「^」開頭，而以「$」結尾。

	一般而言，當以多行文字的陣列和正規表示式表達時，regexp() 會傳回一個
	含有那幾行符合指定的正規表示式文字之陣列。如果 (flag & 2) 不為零，
	（預設值 0），則將傳回不符合者而非符合者。如果 (flag & 1) 不為零，
	則會傳回這種格式的陣列：
	({ 索引 1 + 1,	符合 1, ..., 索引 n + 1, 符合 n }) 的陣列，這裡的索
	引 1 是指第一個符合／不符合者在文字行陣列中的索引 (index)。

正規表示式語法：

	一個正規表示式含有零個或是多個由「|」分隔的「分段」(branch)。它可找
	出符合這些分段之一的任何東西。

	一個分段是由零個或多個「部份」(piece) 相連而成的。它可依序相配符合
	的第一個單元、第二個單元等等。

	一個部份是一個可能會接著「*」、「+」或「?」的「單元」(atom)。
	一個接著「*」的單元可以相配一串零個以上符合的單元。
	一個接著「+」的單元可以相配一串一個以上符合的單元。
	一個接著「?」的單元可以相配一個單元或是虛字串 (null string)。

	一個單元是一個在括弧中的正規表示式（相配一個正規表示式）、一個「範
	圍」(range)（後面會說明）、「.」（相配任何單一字元）、「^」（相配輸
	入字串開頭的虛字串）、「$」（相配輸入字串結尾的虛字串）、一個接著單
	一字元的「\」（配對此字元）或是一個沒有其他意義的單一字元（相配這個
	字元）。

	一個「範圍」是一個包含在「[]」內的字元序列 (sequence)。
	它一般是相配任何在序列中的任何單一字元。如果這個序列以「^」開始，則
	它只能相配「不是」來自序列剩餘部份的任何單一字元。如果在序列中的二
	個字元中間夾有「-」，則這是個含有介於它們間所有 ASCII 字元的簡寫（
	例如，「[0-9]」可相配任何 0 到 9 的數字）。
	要在序列中包含字元「]」的話，就要將它放在第一個字元〈有可能放在
	「^」後面〉。
	要包含字元「-」的話，要把它放在第一個或最後一個字元。

不明確性 (ambiguity)：

	如果一個正規表示式可以符合輸入字串的二個不同部份，則它將只會相配較
	早開始的那一個。若二個都在相同位置開始但符合長度不同，或是符合方法
	不同而同長度的話，情況就會變的很複雜，詳述如下：

	一般上來說，一串分段列表的可能性是依由左至右的順序，「*」、「+」和
	「?」總是儘量相配最長的字串，巢狀結構會由外層開始，而連結
	(concatenated) 的結構是由最左邊的開始。將會選用的符合結果是採用最
	早可能性的選擇。
	如果有多於一個的選擇，則下一個也會因第一個選擇而採取同樣的方法（最
	早可能性），之後繼續。

	舉例來說，「(ab|a)b*c」可以有二種方式相配「abc」。第一個選擇是
	「ab」或「a」；因為「ab」較早符合而且可以相配成功，所以它被選用。由
	於「b」已符合，所以「b*」必須相配它最後的可能────空字串，因為它必須
	遵從較早的選擇。

	一個沒有「|」而只有一個「*」、「+」或「?」的特殊情況，它的效果是會
	選用最長的可能符合者。因此，對「xabbby」來說，「ab*」將會相配
	「abbbb」。注意，如果改成「xabyabbbz」，它將只會相配到「x」之後的
	「ab」，因為它遵守「開始最早守則」(begins-earliest rule)。（結果是
	，決定從哪裡開始相配是第一個要做的選擇，因為其後的選擇必須遵從它，
	即使會導致比較不好的選擇結果。）
參考：
	sscanf, explode, strsrch
作者：
	Tim Hollebeek  Beek@ZorkMUD, Lima Bean, IdeaExchange, and elsewhere
原譯：
	Kenny@Broken.History	97.Jul.26
校訂：
	spock@muds.net		2000.Aug.28.	v22 版
