// ? 號的意義是匹配 0-1 次, 如果需要匹配 ? 怎么辦
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);
reg.Subject := '你好嗎? 還行!';
reg.RegEx := '\?|!'; // 加轉(zhuǎn)義用的 reg.Replacement := '◆';
reg.ReplaceAll;
ShowMessage(reg.Subject); //返回: 你好嗎◆ 還行◆
FreeAndNil(reg);
end;
//亂用轉(zhuǎn)義符號 \ 有時是可以的, 但有時會出問題, 最好不要亂用
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);
reg.Subject := '你好嗎? 還行!';
reg.RegEx := '\?|\!|\好'; // 給沒必要的 "!" 與 "好" 加了 \ 在本例中也正常了
reg.Replacement := '◆';
reg.ReplaceAll;
ShowMessage(reg.Subject); //返回: 你◆嗎◆ 還行◆
FreeAndNil(reg);
end;
{ 本來是有一個選項 [preExtra] 禁止亂用的, 但效果不好}
正則表達(dá)式中的特殊字符表:
特殊字符 |
在正則表達(dá)式中的意義 |
匹配字符本身 |
^ |
匹配字符串的開始,或不匹配 [] 中的內(nèi)容 |
\^ |
$ |
匹配字符串的結(jié)尾 |
\$ |
( 和 ) |
標(biāo)記子表達(dá)式 |
\( 和 \) |
[ 和 ] |
匹配"多種字符" 的表達(dá)式 |
\[ 和 \] |
{ 和 } |
匹配次數(shù)的符號 |
\{ 和 \} |
. |
匹配除換行符以外的所有字符 |
\. |
|
匹配 0 次或 1 次 |
\? |
+ |
匹配至少 1 次 |
\+ |
* |
匹配 0 次或任意次 |
\* |
| |
或 |
\| |
\ |
轉(zhuǎn)義符號本身 |
\\ |