最近在用delphi7写一些东西,需要用到正则表达式。以前做网页的时候,一直用 JavaScript/VBScript里面的正则表达式。
昨天换了TPerlRegEx用,感觉真的很有些不习惯。本来要写一个匹配中文标点符号的,匹配英文代码如下
FRe:=TPerlRegEx.Create(nil);
FRe.Subject:=Str;
FRe.RegEx:='[`!@#/$%/^&/*/(/)-=//_/+/|/[]/{};'':",/./<>/?]';
FRe.Replacement:=#13;
FRe.ReplaceAll;
Str:=FRe.Subject;
FreeAndNil(FRe);
没啥问题,但是匹配换成中文标点以后,
FRe.RegEx:='[,。?:;‘’!“”—…、]';
结果就变成乱码了,百思不得其解。用了好几个小时在百度上狂搜索一番,还是没找到答案。后来改了一下表达式成这样
FRe.RegEx:=',|。|?|:|;|‘|’|!|“|”|—|…|、';
结果就正常了。
这两种写法有任何不同吗?我看不出来,本来还想用 [ ] 中间可以使用a-z字符范围的,可以小小的偷懒一下。结果失败了,呵呵。