Pattern类,Matcher类

这篇具有很好参考价值的文章主要介绍了Pattern类,Matcher类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1 Pattern类

2 Matcher类

2.1 matchers( )和 lookingAt( )

2.2 find( ),groupCount( )和group( )

2.3 start( )和end( )

 2.4 replaceFirst( )和replaceAll( )


        在进行正则匹配时,"正则字符串"会被编译成Pattern对象保存在内存中,以"待匹配字符串"作为参数通过Pattern对象创建出Matcher对象,然后对匹配结果做针对性操作

1 Pattern类

java.util.regex.Pattern
方法名 说明
静态 compile("regex") 将"正则字符串"编译成Pattern对象
matcher("str") 使用Pattern对象创建Matcher对象
split("str") 对str按照regex分隔,返回String[ ]
静态 matcher("regex","str") 对整串字符串的校验
Pattern pattern = Pattern.compile("\\d*");
Matcher matcher1 = pattern.matcher("abc456");
Matcher matcher2 = pattern.matcher("123456");
Arrays.toString(pattern.split("12ab33db56cf"));  //返回[, ab, db, cf]

如果一个Pattern对象只用一次,则可以使用Pattern的静态方法matchs( )   String类的matchs( )方法本质就是调用Pattern类的matchs( )方法文章来源地址https://www.toymoban.com/news/detail-421498.html

boolean flag = Pattern.matches("\\d*", "123456");

2 Matcher类

java.util.regex.Matcher
方法名 说明
matchers( ) 整个字符串与regex是否匹配,返回boolean
lookingAt( ) 字符串前面部分与regex是否匹配,返回boolean
find( ) 字符串继续往后匹配,是否还有满足regex的子串,返回boolean
groupCount( ) 返回regex表达式中捕获组个数
group(int) / group(nama) 返回上一次find( )匹配过的子串的捕获组,无参默认0
start( ) 返回上一次find( )匹配过的子串的开始索引
end( ) 返回上一次find( )匹配过的子串的结束索引+1
replaceFirst(replacement) 用replacement替换第一次匹配的内容
replaceAll(replacement) 用replacement替换所有匹配中的内容

2.1 matchers( )和 lookingAt( )

Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher("123abc");
matcher.matches();  //返回false
matcher.lookingAt();  //返回true

2.2 find( ),groupCount( )和group( )

Pattern pattern = Pattern.compile("(\\d{3})-(\\d{7})");
Matcher mc = pattern.matcher("728-4765164  520-7758258");
while (mc.find()) {
	System.out.println("分组的个数有:" + mc.groupCount());
	for (int i = 0; i <= mc.groupCount(); i++) {
		System.out.println("第" + i + "个分组为:" + mc.group(i));
	}
}

//分组的个数有:2
//第0个分组为:728-4765164
//第1个分组为:728
//第2个分组为:4765164

//分组的个数有:2
//第0个分组为:520-7758258
//第1个分组为:520
//第2个分组为:7758258

2.3 start( )和end( )

Pattern pattern = Pattern.compile("[a-z]+");
Matcher matcher = pattern.matcher("123abc456def789");
while (matcher.find()) {
	System.out.println("匹配子串" + matcher.group() + "开始于" + matcher.start() + "结束于" + matcher.end());
    //匹配子串abc开始于3结束于6
    //匹配子串def开始于9结束于12
}

 2.4 replaceFirst( )和replaceAll( )

Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher("12ab33db56cf");
matcher.replaceFirst("换");  //换ab33db56cf
matcher.replaceAll("换");  //换ab换db换cf

到了这里,关于Pattern类,Matcher类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Strategy Pattern and Polymorphism —— Behavioral Pattern

    策略模式很类似现在多功能的洗衣机,每次在洗衣服之前,都需要由用户自己选择想要的洗衣策略,洗衣机收到指定的洗衣策略后,组合成一份新的算法和数据结构才去执行。 策略模式和状态模式的区别在于使用者对它们的 目的 。 策略模式主要用于实现算法的选择和动态切

    2024年02月12日
    浏览(43)
  • Bridge Pattern

    桥接模式(Bridge Pattern),旨在将抽象部分和实现部分解耦,使它们可以独立地变化。该模式通过将抽象和实现分离,使它们可以独立地进行扩展和修改,同时通过桥接(Bridge)将它们连接起来。 将一个事物原本耦合在一起的东西,通过定义成抽象和实现两个维度,做到解耦

    2024年02月10日
    浏览(33)
  • 策略模式【Strategy Pattern】

    刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题, 嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子 的。 1 先说这个场景中的要素: 三个妙计 一个锦囊 一个赵云 妙计

    2024年02月13日
    浏览(39)
  • 桥接模式(Bridge Pattern)

    桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分与其实现部分分离,使它们可以独立地变化。桥接模式通过组合而不是继承来实现这种分离。 桥接模式的主要思想是将抽象和实现分离,让它们可以独立地变化。抽象部分包含高层逻辑,而实现部分包含底层实

    2024年02月15日
    浏览(39)
  • 原型模式(Prototype Pattern)

    原型模式(Prototype Pattern)是一种创建型设计模式,它用于通过复制现有对象来创建新对象,而无需依赖显式的构造函数。 在原型模式中,我们创建一个原型对象,并通过复制该原型对象来创建新的对象。这样做的好处是,我们可以避免创建对象时的复杂实例化过程,而是通

    2024年02月15日
    浏览(47)
  • 代理模式【Proxy Pattern】

    什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道 被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被 代理的人能干活呀。 举例子: 比如西门庆找潘金莲,那潘金莲不好意

    2024年02月12日
    浏览(41)
  • core_pattern

    /proc/sys/kernel/core_pattern 参数用来设置core文件保存位置或文件名,只有文件名时,则保存在应用程序的运行目录下 永久打开生成Core文件的步骤: 1、设置core文件的大小不受限制。 2、ulimit -c校验是否设置成功(如果是0,说明生成core文件开关为关闭) vi /etc/security/limits.conf (使

    2023年04月11日
    浏览(26)
  • 策略模式(Strategy Pattern)

      在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护

    2024年02月05日
    浏览(37)
  • 命令模式(Command Pattern)

    一、定义 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 将一个请求封装为一个对象,从而使你可用

    2024年02月06日
    浏览(37)
  • 原型模式(Prototype Pattern)

    原型模式(Prototype Pattern)结构较为简单,它是一种特殊的创建型模式, 当需要创建大量相同或者相似对象时 ,可以 通过对一个已有对象的复制获取更多对象 。Java语言提供了较为简单的原型模式解决方案,只需要创建一个原型对象,然后通过在类中定义的克隆方法复制自己

    2024年02月03日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包