wordpress UTF8 中文字数统计插件

最近想在博客中实现这样的功能:“本文字数XXX,继续阅读…”。在网上找了一款Word Count Plugin for WordPress,作者是 Murray Williams,可惜它只能统计英文单词数,却不能统计中文字数。我下载了源码,自己动手修改,实现了想要的功能。修改过程中涉及了PHP语言中如何使用正则表达式来匹配中文,于是我把过程写这在里。

Read the rest of this entry »

探索匹配中文的正则表达式

按:本文使用的RegexBuddy为3.1.0(完全)版,并非最新版3.1.1(截至2008.08.23)。需要该版本的请在这篇文章后留言。

注:参考www.regular-expressions.info的风格,更新了本模板的style.css文件,加入了与正则式代码相关的格式:

  • 正则式格式举例:[a-z]+@[a-z]+?\.[a-z]+
  • 匹配格式举例:pig@animals.comchicken@birds.com
  • 普通文本格式举例:这是一些普通文本。hello regex world. pig@animals.com和chicken@birds.com

Read the rest of this entry »

匹配中文的正则表达式

以前在编写linux下的scim郑码码表时,就跟正则式的中文匹配问题打过交道。当时总结了这样一条经验,utf8编码格式下,中文正则式应该这样书写:

[\x80-\xff]{3}

当然,这与语言无关。在perl与python中,都是一样的。

现在,这条正则式又派上用场了。正在编写的一个小程序MiniBlogs Updater中,需要计算用户所输入的文字字数。因为中英文字符编码长度不一,如果直接使用python中的len()函数,它计算的是该字串的实际长度,一个中文字并非等同于一个英文字母的。因此,需要把中文字当成英文字母来处理。

我写了这样一条语句来处理:

length=len(re.sub('[\x80-\xff]{3}','a',msg))

它的意思是,把所有的中文都替换成英文字母a,然后再统计字数。(只是统计而已,不修改源字串。)这条语句在windows下utf8文件中能够正常工作。

再分享两则与匹配中文的正则表达式有用的链接: