Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 244|回复: 0

[正则表达式学习]java正则表达式学习笔记1.2

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-31 00:00:31 | 显示全部楼层 |阅读模式
    实例三:
    数据提取 要求:从一段HTML代码中提取出所有的email地址和<a href...>tag中的链接地址

    public
      
    class
      HtmlTest {
      
       



    public
      
    static
      
    void
      main(String[] args) {
      
       




    String htmlText =
    "<html>"
      
       






    +
    "<a href="testone@163.com">163test</a>
    "
      
       






    +
    "<a href="www.163.com@163-com.com">163news</a>
    "
      
       






    +
    "<a href=http://www.163.com>163lady</a>
    "
      
       






    +
    "<a href = http://sports.163.com>网易体育</a>
    "
      
       






    +
    "<a href    = "http://gz.house.163.com">网易房产</a>
    "
      
       






    +
    ".leemaster@163"
      +
    "luckdog.com"
      +
    "</html>"
    ;
      
       




    System.
    out
    .println(
    "开始检查email"
    );
      
       




    for
      (String email :
    extractEmail
    (htmlText)) {
      
       





    System.
    out
    .println(
    "邮箱是:"
      + email);
      
       




    }
      
       




    System.
    out
    .println(
    "开始检查超链接"
    );
      
       




    for
      (String link :
    extractLink
    (htmlText)) {
      
       





    System.
    out
    .println(
    "超链接是:"
      + link);
      
       




    }
      
       



    }
      
       


      
       



    private
      
    static
      List<String> extractLink(String htmlText) {
      
       




    List<String> result =
    new
      ArrayList<String>();
      
       




    Pattern p = Pattern.
    compile
    (Regexes.
    HREF_LINK_REGEX
    );
      
       




    Matcher m = p.matcher(htmlText);
      
       




    while
      (m.find()) {
      
       





    result.add(m.group());
      
       




    }
      
       




    return
      result;
      
       



    }
      
       


      
       



    private
      
    static
      List<String> extractEmail(String htmlText) {
      
       




    List<String> result =
    new
      ArrayList<String>();
      
       




    Pattern p = Pattern.
    compile
    (Regexes.
    EMAIL_REGEX
    );
      
       




    Matcher m = p.matcher(htmlText);
      
       




    while
      (m.find()) {
      
       





    result.add(m.group());
      
       




    }
      
       




    return
      result;
      
       



    }
      
       


    }
      
       


      
       


    public
      
    class
      Regexes {
      
       



    public
      
    static
      
    final
      String
    EMAIL_REGEX
      =
      
       


    "(?i)(?<=\b)[a-z0-9][-a-z0-9_.]+[a-z0-9]@([a-z0-9][-a-z0-9]+\.)+[a-z]{2,4}(?=\b)"
    ;
      
       



    public
      
    static
      
    final
      String
    HREF_LINK_REGEX
      
      
       


    =
    "(?i)<a\s+href\s*=\s*[""]?([^""\s>]+)[""\s>]"
    ;
      
       


    }
      
       


      
       


    运行结果:
      
       


    开始检查email
      
       


    邮箱是:testone@163.com
      
       


    邮箱是:www.163.com@163-com.com
      
       


    邮箱是:leemaster@163luckdog.com
      
       


    开始检查超链接
      
       


    超链接是:<a href="testone@163.com"
      
       


    超链接是:<a href="www.163.com@163-com.com"
      
       


    超链接是:<a href=http://www.163.com>
      
       


    超链接是:<a href = http://sports.163.com>
      
       


    超链接是:<a href    = "http://gz.house.163.com"
      
       


      
       



    实例四:
      
       


    查找重复单词
      
       


    要求:查找一段文本中是否存在重复单词,如果存在,去掉重复单词。
      
       


      
       


    public
      
    class
      FindWord {
      
       



    public
      
    static
      
    void
      main(String[] args) {
      
       




    String[] sentences =
    new
      String[] {
    "this is a normal sentence"
    ,
      
       






    "Oh,my god!Duplicate word word"
    ,
      
       






    "This sentence contain no duplicate word words"
      };
      
       


      
       




    for
    (String sentence:sentences){
      
       





    System.
    out
    .println(
    "校验句子:"
    +sentence);
      
       





    if
    (
    containDupWord
    (sentence)){
      
       






    System.
    out
    .println(
    "Duplicate word found!!"
    );
      
       






    System.
    out
    .println(
    "正在去除重复单词"
    +
    removeDupWords
    (sentence));
      
       





    }
      
       





    System.
    out
    .println(
    ""
    );
      
       




    }
      
       



    }
      
       


      
       



    private
      
    static
      String removeDupWords(String
    sentence
    ) {
      
       




    String regex = Regexes.
    DUP_WORD_REGEX
    ;
      
       




    return
      
    sentence
    .replaceAll(regex,
    "$1"
    );
      
       



    }
      
       


      
       



    private
      
    static
      
    boolean
      containDupWord(String sentence) {
      
       




    String regex = Regexes.
    DUP_WORD_REGEX
    ;
      
       




    Pattern p = Pattern.
    compile
    (regex);
      
       




    Matcher m = p.matcher(sentence);
      
       




    if
    (m.find()){
      
       





    return
      
    true
    ;
      
       




    }
    else
    {
      
       





    return
      
    false
    ;
      
       




    }
      
       



    }
      
       


      
       


    }
      
       


    public
      
    class
      
    Regexes
      {
      
      
       



    public
      
    static
      
    final
      String
    DUP_WORD_REGEX
      
      
       


    =
    "(?<=\b)(\w+)\s+\1(?=\b)"
    ;
      
       
    }
    运行结果:
    校验句子:this is a normal sentence
    校验句子:Oh,my god!Duplicate word word
    Duplicate word found!!
    正在去除重复单词Oh,my god!Duplicate word
    校验句子:This sentence contain no duplicate word words



      
      
       
       

         
       

         
       
      
    复制代码

    源码下载:http://file.javaxxz.com/2014/10/31/000031343.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 19:16 , Processed in 0.395146 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表