正则表达式区分中英文

转载至: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来处理了,这种环境在另外的开发环境中可能就不适用了


转载于:https://www.cnblogs.com/qyfan82/archive/2007/09/03/880122.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值