最近在用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字符范围的,可以小小的偷懒一下。结果失败了,呵呵。
本文探讨了在Delphi7中使用TPerlRegEx组件进行正则表达式的实践过程。作者通过对比英文与中文标点匹配的差异,揭示了正则表达式在处理不同字符集时的注意事项,并分享了解决方案。
7735

被折叠的 条评论
为什么被折叠?



