luoluo20000504
2009-04-16 16:02 阅读 454

求一个正则表达式,提取utf8编码的字符串中的汉字,剔除英文、数字、特殊符号等

求一个正则表达式,提取utf8编码的字符串中的汉字,剔除英文、数字、特殊符号等
[b]问题补充:[/b]
多谢,
目前需要ruby程序

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

14条回答 默认 最新

  • 已采纳
    iteye_10288 iteye_10288 2009-04-16 23:22

    楼上的太复杂了。
    我不知道正则怎么写
    不过自己写了个很简单的:

    [code="ruby"]
    def find_chinese_charactor str
    str.unpack("U*").select{ |p| (0x4e00..0x9fa5).member? p }.pack("U*")
    end

    #测试用例
    "今天开始下雨了,it start to rain,now.123123哈哈".unpack("U*").select{ |p| (0x4e00..0x9fa5).member? p }.pack("U*")

    #output copied to clipboard
    #今天开始下雨了哈哈
    [/code]

    再比我简单的估计只有用正则了吧

    点赞 评论 复制链接分享
  • weixin_42297497 weixin_42297497 2009-04-16 16:12


    function ddd() { var str = document.getElementById('text').value; if (str.match(/[^\u4e00-\u9fa5]/g)) { alert("只能输入中文"); } }




    What is you name?




    点赞 评论 复制链接分享
  • wanghaolovezlq wanghaolovezlq 2009-04-16 16:43

    [code="java"]
    public static String getString(String str)
    {
    String regex = "[^a-z|\d|\s|\p{Punct}]";

        Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
    
        Matcher m = p.matcher(str);
    
        StringBuffer ret = new StringBuffer();
        while(m.find())
        {
            ret.append(m.group());
        }
    
        return ret.toString();
    }
    

    [/code]

    点赞 评论 复制链接分享
  • wanghaolovezlq wanghaolovezlq 2009-04-16 16:50

    同学,这不差不多嘛,就主要是正则表达 式嘛哎

    点赞 评论 复制链接分享
  • pmalex pmalex 2009-04-16 17:06

    [code="java"]/[\x{4e00}-\x{9fa5}]*/u[/code]
    以上针对中文的正则

    点赞 评论 复制链接分享
  • pmalex pmalex 2009-04-16 17:36

    定义Stting 的时候注意如下:
    /[\x{4e00}-\x{9fa5}]*/u

    点赞 评论 复制链接分享
  • weixin_42513366 Candyut 2009-04-16 19:43

    看来楼上的一些解法大部分是网上搜的,,,这个正则表达式或许正确,但是对ruby不适用的,ruby 1.86的编码存在许多问题,,,貌似1.9会好些。
    [code="ruby"]
    $KCODE='u'
    require'iconv'
    require'jcode'
    require'open-uri'
    class String
    def get_pure_chinese
    self.scan(/./u).map{|e| e if e.size==3}.join
    end
    def to_gbk
    Iconv.iconv('gbk','utf-8',self).to_s
    end
    end
    #test
    string=open('http://iteye.com').read #获取一秛utf-8文本
    puts string.get_pure_chinese.to_gbk#用to_gbk是因为了把utf-8字符转化成gbk,以免在控制台显示乱码,如果你是做rails应用,可以不用to_gbk直接获取中文的utf-8编码结果
    输入结果:
    =begin
    编程框架技术敏捷软件开发实践做最棒的软件开发交流社区编程框架深入开发开发企业应用
    设计模式开源框架应用服务器讨论编程开发实践编程敏捷软件开发软件配置管理软件测试项
    目管理数据库平台精通编程框架技术敏捷软件开发实践深度技术社区技术网站频道订阅登录
    您还未登录我的应用登录注册最棒的软件开发交流社区推荐知识库开发架构渐变论坛热点推
    荐-年月进入的世界在平台上安装和配置详解面向对象技术基础一创始人推荐博客不要把简
    单的事情搞得复杂(例)不要把简单的事情搞得复杂(例)标签大全、样式大全、参考大全
    (格式)标签大全、样式大全、参考大全(格式)特效大集合网络收集特效大集合网络收集
    《大腕》之网站开发版《大腕》之网站开发版大型网站架构之优酷篇大型网站架构之优酷篇
    人生的第一次摆摊人生的第一次摆摊年终奖发多了年终奖发多了程序员的三大美德程序员的
    三大美德我的小站目前开放的网站通用调用接口我的小站目前开放的网站通用调用接口《精
    粹》书评《精粹》书评无刷新聊天室实现压缩包附件下载无刷新聊天室实现压缩包附件下载
    学习是学习,工作是工作学习是学习,工作是工作续:一个待业个月想做的老人续:一个待
    业个月想做的老人让第一个跑起来让第一个跑起来全角和半角的解决方法全角和半角的解决
    方法推荐圈子圈子语言语言难否?说难不难,不难也难。难,是因为没有正确掌握的语义,
    一但掌握,看代码如行云流水,如庖丁解牛。是的超集,打通了,不在话下,是操作系统的
    ,通关后可以充分利用操作系统全部功能,做别人做不到的事。学习,力争精通,是成为高
    手必经之路。欢迎来到语言圈,共同学习,探索无极。语言语言语言难否?说难不难,不难
    也难圈子欢迎大家来讨论和学习,这里有的最佳应用和的展望。欢迎大家来讨论和学习,这
    圈子魔兽争霸玩不腻的魔兽争霸。魔兽争霸魔兽争霸玩不腻的魔兽争霸。黑板报论坛热点推
    荐-年月图灵杯第届问答大赛开始了!奖品丰厚!前五名都能获奖-月日至月日论坛公告:
    新开编程语言版面中港软件硕士不参加统考国家承认学位中央财经大学金融学博士课程深圳
    热招焦点新闻更多百度与的竞争关键也许还真就缺那个像素百度与的竞争关键也许还真就缺
    网易接盘《魔兽世界》,第九城市也许就要变成“第九农村”了!网易接盘《魔兽世界》,
    第九城市也许就的首席开源官抨击对的支持的首席开源官抨击对的支走进苏黎世奢华办公室
    走进苏黎世奢华办公室用户调查用户调查发布了发布了插件发布,将内置支持插件发布,编
    程和企业应用热点论坛学习笔记学习笔记以截拳道看太极模式以截拳道看太极模式接口存在
    的意义只在于接口依赖注入接口存在的意义只在于接口依赖注入有兴趣的兄弟(牛人)们来
    说说(猜猜)的调用原理啊有兴趣的兄弟(牛人)们来说说(猜猜)优劣之我见优劣之我见
    从一道面试题想到的论坛数据库设计从一道面试题想到的论坛数据库设计初体验初体验实战
    实战对权限管理认识的一些误区对权限管理认识的一些误区前端技术热点技术论坛页面输出
    时一些常用的小技巧(持续更新中)页面输出时一些常用的小技巧(持续更新决定在中集成
    编译客户端模板功能决定在中集成编译客户端模板功编辑器。编辑器。、之说三道四、之说
    三道四闭包闭包下一步开发计划下一步开发计划和之间的选择问题和之间的选择问题的版本
    !的版本你应当了解的几个新技术你应当了解的几个新技术编程热点论坛教你用算命!教你
    用算命!浅尝浅尝性能提升的秘籍性能提升的秘籍请注意自带的有性能问题请注意自带的如
    果你升级完遇到了问题如果你升级完遇到了问题不再推荐不再推荐中文编程中文编程闲聊客
    户端版闲聊客户端版可视化开发工具可视化开发工具软件项目管理热点软件开发论坛也说回
    归测试也说回归测试有人真正把自动化功能测试做起来了吗?有人真正把自动化功能测试做
    起来了吗?一个时间进度安排比较急的项目,组员却水平有限一个时间进度安排比较急的项
    目,组员却如何看待项目组中没有责任心的成员如何看待项目组中没有责任心的成员这样的
    项目经理我要当吗这样的项目经理我要当吗如何让软件外包人员具有归属感如何让软件外包
    人员具有归属感也谈人员流失问题王泽宾也谈人员流失问题王泽宾是不是以开发效率换代码
    质量(原标题:单元测试的成本和收益)是不是以开发效率换代码质量(原标后备人才的培
    养后备人才的培养综合技术热点综合技术论坛关于单例模式的一些疑问?关于单例模式的一
    些疑问?十进制转化十六进制问题??十进制转化十六进制问题??用构建高性能消息服务
    用构建高性能消息服务成功刷到成功刷到偶对的偶对的的多数据库处理(垂直分库和水平分
    库)的多数据库处理(垂直分库和水平这个循环太让人郁闷了这个循环太让人郁闷了一个很
    有趣的编程题一个很有趣的编程题下应用开发的一些总结下应用开发招聘和求职热点招聘论
    坛最近行情如何?最近行情如何?请南京的朋友帮忙介绍个工作,提供个面试机会就行(开
    发)请南京的朋友帮忙介绍个工作,提供个面我听说:刚刚毕业的研究生在深圳华为的工资
    有元我听说:刚刚毕业的研究生在深圳华为的大家帮看看我这份简历合格不?刚辞职,今天
    写的简历!不晓得还有那些地方要修改,希望大家指出!大家帮看看我这份简历合格不?刚
    辞职,上海,求职上海,求职找工作一个月了找工作一个月了调查,敲代码,你敲了几年?
    你还想敲几年?以后的打算是什么?调查,敲代码,你敲了几年?你还想敲关于为什么这么
    多晒简历的想法!关于为什么这么多晒简历的想法!诚心询问下,这种水平在北京薪资是什
    么水平的。谢谢了诚心询问下,这种水平在北京薪资是什么圈子讨论热点圈子频道入圈这么
    久,没贡献什么,现在发个语言的组件实现,呵呵入圈这么久,没贡献什么,现在发个语五
    一节,来成都热波音乐节吧!五一节,来成都热波音乐节吧!请推荐一本本,女生用,谢谢
    请推荐一本本,女生用,谢谢如何投资如何投资中怎样让后台中的验证信息在前台的页面弹
    出框显示?中怎样让后台中的验证信息在前细粒度权限管理产品的应用场景细粒度权限管理
    产品的应用场景怎么把数字变成字符串怎么把数字变成字符串如何解析通过请求来的数据?
    如何解析通过请求来的如何才能玩好魔兽争霸?如何才能玩好魔兽争霸?海阔天空热点海阔
    天空论坛统计北京上海以及境外程序员含港澳的收入情况统计北京上海以及境外程序员含港
    北京的上门服务为什么这么发达呢?北京的上门服务为什么这么发达呢?网易抢走《魔兽世
    界》,第九城市或变“第九农村”!网易抢走《魔兽世界》,第九城市或变“决定离开北京
    ,感谢,感谢决定离开北京,感谢,感谢我决定不买请看图!我决定不买请看图!搜狐的短
    板?搜狐的短板?列举一下北京的高薪企业,为跳槽人士指明方向列举一下北京的高薪企业
    ,为跳槽人士指批了淘宝批支付宝批了淘宝批支付宝我被小鸟轰炸了我被小鸟轰炸了搜索热
    门招聘职位新锐互动公司北京和上海两地诚聘杭州华颂科技有限公司诚聘、、、上海泰腾投
    资诚聘软件工程师杭州兆义信息技术有限公司诚聘资深工程师上海电子商务网站诚聘工程师
    上海中科大洋诚聘工程师浙江:百世物流诚聘资深工程师北京:迅捷英翔诚聘高级工程师上
    海巨人网络诚聘网页游戏工程师加盟电子商务创业公司,获得一场精彩的生活求职宝典规避
    职业生涯规划陷阱面试中肢体语言的禁忌测试你未来的职业方向何为五险一金“杀人游戏”
    的职场测试之五面试之前必须查明一切博客本月排行榜王者之剑博客年度排行榜臧圩人首页
    新闻论坛问答知识库博客圈子招聘服务搜索敏捷图书普元广告服务黑板报关于我们联系我们
    友情链接上海炯耐计算机软件有限公司沪备号
    =end

    [/code]

    点赞 评论 复制链接分享
  • orange0513 身陷囹圄 2009-04-17 08:17

    [code="ruby"]
    s="今天开始下雨了,it start to rain,now.123123哈哈"
    p=/[^\u4e00-\u9fa5]/
    s1=s.gsub(p,'')
    p s1.encode('gbk','utf-8')
    [/code]
    ruby1.9.1p0下运行,代码保存为带BOM的utf-8

    点赞 评论 复制链接分享
  • weixin_42513366 Candyut 2009-04-17 10:25

    其实都差不多的,我的核心代码貌似要比你的还简单。。。
    [code="java"]
    $KCODE='u'
    require'jcode'
    def get_pure_chinese(str)
    str.scan(/./u).select {|e| e.size==3}.join

    end
    [/code]
    之所以定义其他方法注释已经说的很清楚了,想必楼主也一定遇到过这个问题。

    点赞 评论 复制链接分享
  • weixin_42513366 Candyut 2009-04-17 11:05

    再补充一点[code="ruby"]
    $KCODE='u'

    require'jcode'
    [/code]
    是可以去掉的,因为/./u中正则字面量u会指定按$KCODE='u'方式处理字符串

    点赞 评论 复制链接分享
  • iteye_10288 iteye_10288 2009-04-17 12:24

    RE:汪兆铭
    恩,仔细看后确实差不多,无非是先拆字,然后判断
    学到一个新方法 str.scan 谢谢~~

    不过你的有一个问题,并不是所有size为3的都为中文字符
    比如日语,您少考虑这一点了。
    嘿嘿。

    点赞 评论 复制链接分享
  • iteye_10288 iteye_10288 2009-04-17 12:29

    [code="ruby"]
    s = <<-EOS
    さて、今日はキャンペーン臨時号!!
    コレを読んでさまざまな得点をフル活用してね♪
    123231244
    中文开始::“很好不强大”
    EOS
    [/code]

    点赞 评论 复制链接分享
  • iteye_10288 iteye_10288 2009-04-17 12:30
    1. ^[\u2E80-\u9FFF]+$
    2. 匹配所有东亚区的语言
    3. ^[\u4E00-\u9FFF]+$
    4. 匹配简体和繁体
    5. ^[\u4E00-\u9FA5]+$
    6. 匹配简体
    点赞 评论 复制链接分享
  • iteye_12130 iteye_12130 2009-04-17 20:58

    我给个建议,把上面的正则表达式用火狐的一的测正则表达式的插件测测不就ok了!

    点赞 评论 复制链接分享

相关推荐