通过与 Jira 对比,让您更全面了解 PingCode

PingCode AI 开始智能化研发管理新时代

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
  • 研发管理
        • 更多产品
          产品管理

          客户为中心的产品管理工具

          项目管理

          专业的软件研发项目管理工具

          知识管理

          简单易用的团队知识库管理

          效能度量

          可量化的研发效能度量工具

          测试管理

          测试用例维护与计划执行

          协作空间

          以团队为中心的协作沟通

          自动化

          研发工作流自动化工具

          目录服务

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

          Jira 对比
          产品视频
  • 解决方案
        • 场景解决方案
          Scrum 敏捷开发
          Kanban 管理
          知识管理
          测试管理
          产品管理
          自动化
          行业解决方案
          企业服务
          汽车电子
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

免费试用
目录

Java Matcher对象中find()与matches()的区别

find():是否存在与该模式匹配的下一个子序列。简单来说就是在字符某部分匹配上模式就会返回true,同时匹配位置会记录到当前位置,再次调用时从该处匹配下一个。matches():整个字符串是否匹配上模式,匹配上则返回true,否则false。

一、Java Matcher对象中find()与matches()的区别

find():是否存在与该模式匹配的下一个子序列。简单来说就是在字符某部分匹配上模式就会返回true,同时匹配位置会记录到当前位置,再次调用时从该处匹配下一个。

matches():整个字符串是否匹配上模式,匹配上则返回true,否则false。

@Test

public void patternTest() {

    String str = “hellohellohello”;

    String regex = “hello”;

    Pattern pattern = Pattern.compile(regex);

    Matcher matcher = pattern.matcher(str);

    System.out.println(matcher.find());

    System.out.println(matcher.matches());

}

输出结果为:

find() -> true

matches() -> false

再拓展两个函数,Matcher中的start()和end()。start(),点进方法可以看到返回的是上一个匹配项的起始索引,如果没有匹配项将抛出IllegalStateException异常。同理,end()则为结束的索引。

好了,那我们来看一个例子:

@Test

public void patternTest() {

    String str = “hellohellohello”;

    String regex = “hello”;

    Pattern pattern = Pattern.compile(regex);

    Matcher matcher = pattern.matcher(str);

    while (matcher.find()) {

      System.out.println(matcher.start() + “->” + matcher.end());

    }

}

输出:

0->5

5->10

10->15

可以看出find()匹配完后会记录当前匹配位置知道最后。

我们再看看另外一种情况,尝试在matcher.matches()后面再匹配一次matcher.find()会发生什么情况?

@Test

public void patternTest() {

    String str = “hello”;

    String regex = “hello”;

    Pattern pattern = Pattern.compile(regex);

    Matcher matcher = pattern.matcher(str);

        System.out.println(“find() -> ” + matcher.find());

    System.out.println(“matches() -> ” + matcher.matches());

    System.out.println(“find() -> ” + matcher.find());

}

输出结果为:

find() -> true

matches() -> true

find() -> false

matcher.find()名列前茅次为true,第二次却为false,这将带来了好多小问号了。我们还是进入matches()方法看看,从this.oldLast = this.last可以看出,matches()更新了最后匹配位置,所以在使用find()去找下一个匹配位置时,就找不到了,所以为false。而如果要重置匹配位置,可以使用find(0)(说明:find(int start),重置匹配器,然后尝试查找索引start开始的下一个满足匹配的子序列,所以find(0)相当于重置为最原始状态)。

延伸阅读:

二、什么是Java

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

upvote 点赞 0
上一篇Linux-cp和mv命令的区别
下一篇requestLayout和invalidate区别
相关文章

10款技术文档管理系统解析:如何选择适合您的系统?

百科

如何选择合适的文档结构化管理系统:10款软件的完全指南

百科

选择合适的ICT项目管理工具:10款软件推荐

百科

免费项目管理工具大比拼:2024年10款选择

百科

如何通过内网文档管理系统提升企业效率?10款软件解析

百科

如何选择合适的办公文档管理系统?10款软件推荐

百科

探索可视化项目管理系统:10款软件详解

百科

找到合适的项目工程管理解决方案:10个值得考虑的系统

百科

企业如何管理文件?10款软件工具助力解决

百科

如何提升办公效率?探索10款文档管理软件

百科
查看更多

玻璃钢生产厂家宁德手糊法玻璃钢雕塑公司商场美陈卡通模型河南省玻璃钢雕塑报价江西玻璃钢雕塑市场报价深圳商场美陈销售厂家出售树脂玻璃钢花盆玻璃钢仿铜雕塑哪家合适户外玻璃钢雕塑维修漯河不锈钢太湖石玻璃钢雕塑公司平顶山铜玻璃钢彩绘雕塑湖南商城艺术玻璃钢雕塑工厂江门玻璃钢雕塑厂家供应红色玻璃钢人物雕塑供应商绵阳市生产玻璃钢雕塑厂家玻璃钢雕塑自行车陕西抽象玻璃钢雕塑批发重庆佛像玻璃钢雕塑价位玻璃钢仿铜雕塑厂家地址漯河玻璃钢人物室外雕塑云浮玻璃钢造型雕塑价格陕西玻璃钢美陈雕塑玻璃钢雕塑施工工艺优质玻璃钢雕塑工艺品厂家沈阳玻璃钢雕塑制作3d许昌定做玻璃钢雕塑厂报价湖北定制玻璃钢雕塑设计卡通雕塑玻璃钢雕塑芜湖玻璃钢龙雕塑设计玻璃钢花盆怎么做北京玻璃钢雕塑烤漆厂香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化