reg: TPerlRegEx; reg := TPerlRegEx.Create(); reg.Subject := ; reg.RegEx := ; reg.Replacement := ; reg.Options := [preCaseLess]; reg.ReplaceAll; ShowMessage(reg.Subject); FreeAndNil(reg); ; reg: TPerlRegEx; reg := TPerlRegEx.Create(); reg.Subject := ; reg.RegEx := ; reg.Replacement := ; reg.Options := [preAnchored]; reg.ReplaceAll; ShowMessage(reg.Subject); FreeAndNil(reg); ; reg: TPerlRegEx; reg := TPerlRegEx.Create(); reg.Subject := + + ; reg.RegEx := ; reg.Replacement := ; reg.Options := [preDollarEndOnly]; reg.ReplaceAll; ShowMessage(reg.Subject); FreeAndNil(reg); ; reg: TPerlRegEx; reg := TPerlRegEx.Create(); reg.Subject := + + ; reg.RegEx := ; reg.Replacement := ; reg.Options := [preMultiLine]; reg.ReplaceAll; ShowMessage(reg.Subject); FreeAndNil(reg); ; reg: TPerlRegEx; reg := TPerlRegEx.Create(); reg.Subject := + + ; reg.RegEx := ; reg.Replacement := ; reg.Options := [preSingleLine]; reg.ReplaceAll; ShowMessage(reg.Subject); FreeAndNil(reg); ; reg: TPerlRegEx; reg := TPerlRegEx.Create(); reg.Subject := ; reg.RegEx := ; reg.Replacement := ; reg.Options := [preUnGreedy]; reg.ReplaceAll; ShowMessage(reg.Subject); FreeAndNil(reg); ; reg: TPerlRegEx; reg := TPerlRegEx.Create(); reg.Subject := ; reg.RegEx := ; reg.Replacement := ; reg.Options := [preExtended]; reg.ReplaceAll; ShowMessage(reg.Subject); FreeAndNil(reg); ;
关于选项 preExtra:
如果表达式中需要特殊字符 ^ $ ( ) [ ] { } . ? + * | \ 时, 需要加转义符号 \ ;
默认状态下, 其他字符前面添加了 \ 会识别为字符本身;
preExtra 选项应该就是禁止这种情况的, 也就是不要在非特殊字符前加 \ ;
但测试效果 ... 也许是我没弄明白!
还有三个状态选项: preNotBOL, preNotEOL, preNotEmpty
reg.State := [preNotBOL] 是让标记开始的 ^ 无效;
reg.State := [preNotEOL] 是让标记结尾的 $ 无效;
reg.State := [preNotEmpty] 没弄明白!
另外这些选择是可以组合使用的, 譬如:
reg.Options := [preCaseLess, preMultiLine, preSingleLine];
reg.State := [preNotBOL, preNotEOL];
转载于:https://blog.51cto.com/rosehacker/450675