文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>如何通过正则表达式区分中英文

如何通过正则表达式区分中英文

时间:2007-01-28  来源:qintel

作者:车东 发表于:2007-01-08 15:01 最后更新于:2007-01-08 15:01
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.chedong.com/blog/archives/001261.html

正则表达式用了几年了,本以为这个问题很简单:把所有查询关键词中纯英文(包括数字)的滤出来;但是折腾了一下午才总算找到了以下解决方法:
iconv -f gbk -t utf-8 query_list |egrep -e "^[a-z0-9]*$"

1 为什么需要用utf-8: 如果直接对gbk编码的文字进行grep会由于编码中的交叉而滤出很多中文;
2 为什么需要用egrep: egrep=grep -E 就是正则表达式支持扩展字符集,扩展的正则支持用高八位字符;

关键:先将文本强制转换成UTF-8,然后利用egrep。
适用环境:Unix命令行模式下的grep;

有更简单的方法吗:请留言……

尝试一:
为了解决滤出字母数字查询词,先是直接grep "^[A-Za-z0-9]+$",但是总是滤出大量的中文

尝试二:
后来无意中发现使用egrep "^[a-z0-9]+$" 可以大大减少中文的量,推断关键词是GBK格式的,GBK和英文编码含有大量交叉;

尝试三:
在网上找到很多文档都是转载:使用 [\x00-\xFF] 这样的正则表达式,但是没有说明,其应用的环境是在javascript这样的环境中,js已经是将字符转换成unicode来处理了,这种环境在另外的开发环境中可能就不适用了

相关阅读 更多 +
排行榜 更多 +
大武道最新版

大武道最新版

休闲益智 下载
宝宝巴士手机版(babybus)

宝宝巴士手机版(babybus)

休闲益智 下载
宝宝巴士快乐启蒙游戏

宝宝巴士快乐启蒙游戏

休闲益智 下载