delphi 匹配中文的正则表达式

2018-10-31

问:
本人最近刚刚学习正则表达式;在学习的过程中,一直被中文匹配的正则表达式而困惑;试过网上一些人提供的方法,例如:[\u4E00-\u9FA5]+ 等等之类,在Delphi里面没有试成功过,很是郁闷啊;在网上下载了一个RegexBuddy工具,它好像是使用C++Builder或者Delphi编译的;当时它支持通过 \w 方式来匹配中文,但是在程序里面却没有办法;不知道它是怎么做到的;现在求在Delphi可用的中文正则表达式的写法;(我目前试用过两种第三方的正则表达式的单元来使用的;一个是(TRegExpr RegExpr.pas);另外一个是:TPerlRegEx PerlRegEx.pas 引用PCRELIB.dll,不支持\u \U);
只要能在Delphi测试通过,立马给分;

答:
1.TRegExpr.pas默认不支持Unicode,找到{.$DEFINE UniCode}行,删除.字符使其支持UniCode.
2.TRegExpr.pas支持unicode的语法为 \x{nnnn} 而不是\unnnn
所以汉字匹配为 [\x{4E00}-\x{9FA5}]+ 而不是 [\u4E00-\u9FA5]+

转:http://bbs.csdn.net/topics/190157076

阅读29