一直以来,都在为Delphi的正则表达式伤脑筋,TRegex倒是上手很快,功能上也没得说,就是Unicode不行,已开启就速度和蜗牛一样,忍受不了。TPerlRegex倒是也蛮不错的,声称支持Unicode,但是不支持/u这样正则表达式。不知道还能如何匹配中文,无奈吧。直接用PCRE倒是个好主意,可惜原生的C语言接口,转到Delphi还是要花写功夫的。何况要用最新版的话就得自己编译。原文出处http://www.qfly.cn
无奈找了个商业版的东东——DIRegex,看了看,不怎么复杂,下载个玩玩,嘿嘿~~安装过称省略N字。搞好后,新建一个程序,放一个TDIPerlRegex在上面,改名为reg,设置CompileOptions中的coUTF8为true,coNoUtf8Check为false,MatchOptions中moBsrUnicode为true,其他保持默认设置。放一个button,双击后写入如下代码:http://jycrop.com/read.php/125.htm
begin
reg.SetSubjectStr(utf8encode( ' adf中国asd ' ));
reg.MatchPattern: = ' p{Han}+ ' ;
reg.Match;
showmessage(utf8decode(reg.MatchedStr));
end;
编译运行,点击按钮,就能看到匹配出来的汉字“中国”了。
新学到个正则: /p{Han}就可以匹配汉字,还可以吧Han换成以下的任意一种,就可以匹配其他国家的文字了。可以使用的国家或文字有:
Arabic, Armenian, Balinese, Bengali, Bopomofo, Braille, Buginese, Buhid, Canadian_Aboriginal, Cherokee, Common, Coptic, Cuneiform, Cypriot, Cyrillic, Deseret, Devanagari, Ethiopic, Georgian, Glagolitic, Gothic, Greek, Gujarati, Gurmukhi, Han, Hangul, Hanunoo, Hebrew, Hiragana, Inherited, Kannada, Katakana, Kharoshthi, Khmer, Lao, Latin, Limbu, Linear_B, Malayalam, Mongolian, Myanmar, New_Tai_Lue, Nko, Ogham, Old_Italic, Old_Persian, Oriya, Osmanya, Phags_Pa, Phoenician, Runic, Shavian, Sinhala, Syloti_Nagri, Syriac, Tagalog, Tagbanwa, Tai_Le, Tamil, Telugu, Thaana, Thai, Tibetan, Tifinagh, Ugaritic, Yi