// ? 号的意义是匹配 0-1 次, 如果需要匹配 ? 怎么办
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);
reg.Subject := '你好吗? 还行!';
reg.RegEx := '\?|!'; // 加转义用的 \
reg.Replacement := '◆';
reg.ReplaceAll;
ShowMessage(reg.Subject); //返回: 你好吗◆ 还行◆
FreeAndNil(reg);
end;
--------------------------------------------------------------------------------
//乱用转义符号 \ 有时是可以的, 但有时会出问题, 最好不要乱用
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);
reg.Subject := '你好吗? 还行!';
reg.RegEx := '\?|\!|\好'; // 给没必要的 "!" 与 "好" 加了 \ 在本例中也正常了
reg.Replacement := '◆';
reg.ReplaceAll;
ShowMessage(reg.Subject); //返回: 你◆吗◆ 还行◆
FreeAndNil(reg);
end;
{ 本来是有一个选项 [preExtra] 禁止乱用的, 但效果不好}
正则表达式中的特殊字符表:
| 特殊字符 | 在正则表达式中的意义 | 匹配字符本身 |
| ^ | 匹配字符串的开始,或不匹配 [] 中的内容 | \^ |
| $ | 匹配字符串的结尾 | \$ |
| ( 和 ) | 标记子表达式 | \( 和 \) |
| [ 和 ] | 匹配"多种字符" 的表达式 | \[ 和 \] |
| { 和 } | 匹配次数的符号 | \{ 和 \} |
| . | 匹配除换行符以外的所有字符 | \. |
| ? | 匹配 0 次或 1 次 | \? |
| + | 匹配至少 1 次 | \+ |
| * | 匹配 0 次或任意次 | \* |
| | | 或 | \| |
| \ | 转义符号本身 | \\ |
浙公网安备 33010602011771号