java正则表达式学习记录

 正则表达式(regular expressions)是一种描述字符串集的方法,它是以字符串集中各字符串的共有特征为依据的。正则表达式可以用于搜索、编辑或者是操作文本和数据。它超出了 Java 程序设计语言的标准语法,因此有必要去学习特定的语法来构建正则表达式。正则表达式的变化是复杂的,一旦你理解了它们是如何被构造的话,你就能解析或者构建任意的正则表达式了。

字符类


字符类


[abc]


a, b 或 c(简单类)


[^abc]


除 a, b 或 c 之外的任意字符(取反)


[a-zA-Z]


a 到 z,或 A 到 Z,包括(范围)


[a-d[m-p]]


a 到 d,或 m 到 p:[a-dm-p](并集)


[a-z&&[def]]


d,e 或 f(交集)


[a-z&&[^bc]]


除 b 和 c 之外的 a 到 z 字符:[ad-z](差集)


[a-z&&[^m-p]]


a 到 z,并且不包括 m 到 p:[a-lq-z](差集)

预定义字符类


预定义字符类


.


任何字符(匹配或者不匹配行结束符)


\d


数字字符:[0-9]


\D


非数字字符:[^0-9]


\s


空白字符:[\t\n\x0B\f\r]


\S


非空白字符:[^\s]


\w


单词字符:[a-zA-Z_0-9]


\W


非单词字符:[^\w]

词量


量 词 种 类


意  义


贪婪


勉强


侵占


X?


X??


X?+


匹配 X 零次或一次


X*


X*?


X*+


匹配 X 零次或多次


X+


X+?


X++


匹配 X 一次或多次


X{n}


X{n}?


X{n}+


匹配 X n 次


X{n,}


X{n,}?


X{n,}+


匹配 X 至少 n 次


X{n,m}


X{n,m}?


X{n,m}+


匹配 X 至少 n 次,但不多于 m 次


边界匹配器


^


行首


$


行尾


\b


单词边界


\B


非单词边界


\A


输入的开头


\G


上一个匹配的结尾


\Z


输入的结尾,仅用于最后的结束符(如果有的话)


\z


输入的结尾

示例:使用分组去文件的扩展名

import java.util.regex.Matcher;

import java.util.regex.Pattern;

publicclass Foo {

publicstatic String testFoo(String
source){

//两个分组

Pattern
p = Pattern.compile("(\\w+).(.+)");

Matcher
mat = p.matcher(source);

mat.find();

//打印分组数

System.out.println(mat.groupCount());

//返回第二个分组内容

returnmat.group(2);

}

publicstaticvoid main(String[]
args) {

System.out.println(testFoo("User3.java"));

}

}

打印结果:

2

java

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 00:06:42

java正则表达式学习记录的相关文章

Java设计模式学习记录-桥接模式

前言 这次介绍结构型设计模式中的第二种模式,桥接模式. 使用桥接模式的目的就是为了解耦,松散的耦合更利于扩展,但是会增加相应的代码量和设计难度. 桥接模式 桥接模式是为了将抽象化与实现化解耦,让二者可以独立地变化.方便对每一部分的扩展,以及单独的维护.抽象化的一方与实现化的一方之间建立一个桥梁,这样两者的依赖关系就可以通过这个桥梁来建立了. 举例 三个小动物要过河,分别是小猪,小鸡,小马,小猪要去河对面的空地晒太阳,小鸡要去河对面的小树林里找虫子吃,小马要去河对面的草地里吃草.那么它们三个都要经

Java设计模式学习记录-装饰模式

前言 装饰模式也是一种结构型模式,主要是目的是相对于类与类之间的继承关系来说,使用装饰模式可以降低耦合度.JDK中有不少地方都使用到了装饰模式,例如Java的各种I/O流,javax.swing包中一些图形界面构件功能的增强等地方都运用了装饰模式. 装饰模式 定义 装饰模式的定义是:在不改变原类文件以及不使用继承的情况下,动态的扩展一个对象的功能.装饰模式是通过创建一个包装对象来实现的,也就是用装饰来包裹真实的对象. 举例 还是老规矩,举例说明,在给亲朋好友过生日时会买生日蛋糕,然后生日蛋糕又有

Java设计模式学习记录-迭代器模式

前言 这次要介绍的是迭代器模式,也是一种行为模式.我现在觉得写博客有点应付了,前阵子一天一篇,感觉这样其实有点没理解透彻就写下来了,而且写完后自己也没有多看几遍,上次在面试的时候被问到java中的I/O的各种实现用到了什么设计模式,我愣是想半天没想出来了,人家还给提示了我也没想出来,最后还是面试官给出的答案,是装饰模式,听到答案后就恍然大悟了,前两天刚看了装饰模式,还写下了I/O操作中的各种类都是用到了装饰模式,后来想想两方面原因造成的当时没回答出来,一是面试时紧张就容易想不起来,二是对设计模式

Java设计模式学习记录-状态模式

前言 状态模式是一种行为模式,用于解决系统中复杂的对象状态转换以及各个状态下的封装等问题.状态模式是将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象的状态可以灵活多变.这样在客户端使用时无需关心对象的状态,可以实现自身的一致性处理.最近工作有些忙,更新博客慢了.还是要严格要求自己的,抽时间也要坚持学习. 状态模式 概念介绍 状态模式允许一个对象在其状态改变时,改变它的行为,对象看起来似乎修改了它的类. 想要在改变自身状态时改变对象行为,最直接的方法就是在代码中将所有可能发生的情

Java设计模式学习记录-单例模式

前言 已经介绍和学习了两个创建型模式了,今天来学习一下另一个非常常见的创建型模式,单例模式. 单例模式也被称为单件模式(或单体模式),主要作用是控制某个类型的实例数量是一个,而且只有一个. 单例模式 单例模式的实现方式 实现单例模式的方式有很多种,大体上可以划分为如下两种. 外部方式 在使用某些全局对象时,做一些“try-Use”的工作.就是如果要使用的这个全局对象不存在,就自己创建一个,把它放到全局的位置上:如果本来就有,则直接拿来使用. 内部实现方式 类型自己控制正常实例的数量,无论客户程序

Java虚拟机学习--记录运行时数据区域

为方便后面学习的理解,记录一下! 运行时数据区 1.线程共享 1.1方法区(Method Area) 1.1.1运行时常量池(Runtime Constant Pool) 1.2堆(Heap) 2.线程私有 2.1虚拟机栈(VM Stack) 2.2本地方法栈(Native Method Stack) 2.3程序计数器(Program Counter Register) 3.直接内存(Direct Memory) 虚拟机栈: 线程私有,生命周期与线程同步,用来执行Java方法. 每个java方法

Java正则表达式学习

因为正则表达式是一个很庞杂的体系,此例仅举些入门的概念,更多的请参阅相关书籍及自行摸索. \\ 反斜杠 \t 间隔 ('\u0009') \n 换行 ('\u000A') \r 回车 ('\u000D') \d 数字等价于[0-9] \D 非数字等价于[^0-9] \s 空白符号 [\t\n\x0B\f\r] \S 非空白符号 [^\t\n\x0B\f\r] \w 单独字符 [a-zA-Z_0-9] \W 非单独字符 [^a-zA-Z_0-9] \f 换页符 \e Escape \b 一个单词的

JAVA NIO学习记录1-buffer和channel

什么是NIO? Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的.基于通道的IO操作.NIO将以更加高效的方式进行文件的读写操作. Java NIO 与IO 的主要区别 Java NIO系统的核心在于:通道(Channel)和缓冲区(Buffer).通道表示打开到IO 设备(例如:文件.套接字)的连接.若需要使用NIO 系统,需要获取用

Java设计模式学习记录-简单工厂模式、工厂方法模式

前言 之前介绍了设计模式的原则和分类等概述.今天开启设计模式的学习,首先要介绍的就是工厂模式,在介绍工厂模式前会先介绍一下简单工厂模式,这样由浅入深来介绍. 简单工厂模式 做法:创建一个工厂(方法或类)用来制造对象. 当一个人想要用手机的时候,需要自己创建手机然后来使用. 如下: public class IphoneX { public IphoneX(){ System.out.println("##### 制造iphoneX #####"); } } public class I