java模式匹配

如果您使用的是Java,那么您很有可能以前已经看过它的模式匹配。 String#matches(String)方法在内部使用Pattern类型,该类型包含更复杂的功能:

通过编译正则表达式来创建Pattern 。 该模式与任何输入字符串匹配,并且可以选择找到捕获组,这些捕获组隔离了字符串数据的某些部分。

该API的用法如下:

 Pattern pattern = Pattern.compile( "([\\^\\S]+) is powerful" );  Matcher matcher = pattern.matcher( "Java is powerful" );  System.out.println(matcher.find()); // true  System.out.println(matcher.group()); // Java is powerful  System.out.println(matcher.group( 1 )); // Java 

find()方法查找模式的下一个匹配项,在此示例中,该匹配项与整个输入字符串匹配。 group()方法返回整个捕获组,即与整个模式匹配,或者在使用索引限定时返回单个捕获组。 捕获组索引从1开始,而不是从0

还有一个matches()方法,其工作方式略有不同:

 Pattern pattern = Pattern.compile( "([\\^\\S]+) is powerful" );  Matcher matcher = pattern.matcher( "Our Java is powerful" );  System.out.println(matcher.matches()); // false  System.out.println(matcher.find()); // true 

matches()尝试从头到尾将整个输入字符串与模式匹配,而find()仅尝试在输入字符串中的某个位置查找模式。

另外,请注意:请仅对不重复重复的单个匹配调用使用快捷方式方法String#matches(String)Pattern#matches(String, CharSequence) 。 模式编译起来很繁琐,我们应该利用模式类型的不变性,并将其重用于多个匹配项。

帖子的内容已从我的通讯034中重新发布 。

翻译自: https://www.javacodegeeks.com/2019/12/matching-patterns-with-java.html

java模式匹配

java模式匹配_用Java匹配模式相关推荐

  1. java正则全局匹配_正则表达式全局匹配模式(g修饰符)

    正则表达式g修饰符: g修饰符用语规定正则表达式执行全局匹配,也就是在找到第一个匹配之后仍然会继续查找. 语法结构: 构造函数方式: new RegExp("regexp",&qu ...

  2. java 模板方法_设计模式(java实现)_模板方法模式(Template method)

    设计模式(java实现)_模板方法模式(Template method) 模板方法模式是编程中经常用到到的模式.它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现.这样,新的子类可以在不改变一个 ...

  3. 谷歌去水印java实现_在Java中实现Google的“您的意思是”功能

    谷歌去水印java实现 介绍 搜索引擎用户经常因各种原因而拼写错误的搜索词,包括键盘问题(键不起作用),陌生的国际名称(例如Sigmund Freud),意外更改一个字母(Sinpsons)或添加一个 ...

  4. python能解密java的_实现Java加密,Python解密的RSA非对称加密算法功能

    摘要 因为最近业务需要使用到openssl的rsa非对称加密算法,研究了下它的使用方式,但是特殊在于前端分IOS和android两端,所以前端部门要求使用java给他们做一个加密工具包,但是因为服务端 ...

  5. java掌握_掌握Java 11的Constantdynamic

    java掌握 为了使JVM对动态语言更具吸引力,该平台的第七版已将invokedynamic引入了其指令集. Java开发人员通常不会注意到此功能,因为该功能已隐藏在Java字节码中. 简而言之,通过 ...

  6. 易语言 java支持_开源Java客户端可以连接易语言服务器

    我们的服务端处理客户端的连接请求是同步进行的, 每次接收到来自客户端的连接请求后, 都要先跟当前的客户端通信完之后才能再处理下一个连接请求. 这在并发比较多的情况下会严重影响程序的性能, 为此,我们可 ...

  7. java 爬虫_探索Java 多线程爬虫及分布式爬虫架构

    在我们调试爬虫程序的时候,单线程爬虫没什么问题,但是当我们在线上环境使用单线程爬虫程序去采集网页时,单线程就暴露出了两个致命的问题: 采集效率特别慢,单线程之间都是串行的,下一个执行动作需要等上一个执 ...

  8. java 观察者模式_图解Java设计模式之观察者模式

    图解Java设计模式之观察者模式 天气预报项目需求 天气预报设计方案 1 - 普通方案 观察者模式(Observer)原理 观察者模式解决天气预报需求 观察者模式在JDK应用的源码分析 天气预报项目需 ...

  9. java 析构函数_《JAVA编程思想》5分钟速成:第5章(初始化和清理)

    第五章.初始化和清理 前言 1.初始化顺序(静态成员.非静态成员,构造器.父类构造器)的排序: 2.构造器(constructor)是否可被重写(override)? 3.final, finally ...

最新文章

  1. boost::hana::make_pair用法的测试程序
  2. EntityFramework Core 1.1有哪些新特性呢?我们需要知道
  3. Raider对F#支持的技术细节
  4. 机器学习实战第15章pegasos算法原理剖析以及伪代码和算法的对应关系
  5. JS 键盘监听事件 enter 13
  6. 一个SAP顾问的回忆:我过去很胖!
  7. 位图索引,数据库索引浅浅的学习
  8. java让弹窗在最上层_layer弹出层显示在top顶层的方法
  9. BZOJ2806:[CTSC2012]Cheat
  10. 软件架构-接口隔离原则
  11. [翻译]SQL Server 该做和不该做的
  12. WC2013 糖果公园
  13. [转]如何配置和使用Tomcat访问日志
  14. html小球与边框碰撞反弹,通过JS如何实现多个小球碰撞反弹
  15. java软件开发是什么_java常用的开发软件是什么
  16. 小米开发版安装magisk_小米6x-从零开始安装magisk
  17. SS导航菜单水平居中的多种方法
  18. 六一儿童节 python
  19. 查看页面滚动条滚动距离,可视区窗口尺寸
  20. 一加官方证实保留耳机插孔,全面屏新品命名一加5T

热门文章

  1. Defend Your Country
  2. Double Strings
  3. Acwing 1072. 树的最长路径
  4. L - Clock Master Gym - 102798L
  5. 数据结构之线段树Ⅴ——(李超线段树)Robot,Product Sum,Building Bridges,Jump mission
  6. 【2018.5.12】模拟赛之一-ssl2413 排名【玄学】
  7. Graph Theory Class(Min25求1~n质数和)
  8. Codeforces Round #664 (Div. 2)
  9. 【矩阵乘法】Matrix Power Series(poj 3233)
  10. 分库分表的事务处理机制