资讯专栏INFORMATION COLUMN

java正则表式的使用

zoomdong / 2845人阅读

摘要:直接使用正则表达式对输入的字符串进行匹配,匹配成功则返回使用正则表示式,进行字符串分割进行匹配操作,如果匹配成功,这三个方法都会返回其中,是在源字符串中找出和正则表达式匹配的字符串。

概念 正则表达式

在阅读本文前,你应该已经了解了正则表达式的基本概念以及如何书写正则表达式。如果对正则表达式不是太了解,或者想更深入地了解正则表示式,请点击这里。

捕获组

捕获组能够让我们方便地从正则表达式中提取出我们需要的内容。捕获组根据字符出现的顺序,从左往右开始进行编号。例如正则表达式((A)(B(C))), 其捕获组分别为:

((A)(B(C)))

(A)

(B(C))

(C)

一个捕获组通常是用括号包起来的部分,其中整个正则表示式是第一个捕获组,可以选择用括号包起来,也可以不用括号。除第一个捕获组之外,其他捕获组都需用括号包起来。

详解Java正则表示式的使用 包简介

java.util.regex包中有一个interface,两个class和一个exception,分别是

MatchResult

Pattern

Matcher

PatternSyntaxException

其中,MatchResult是interface, Matcher实现了这个interface。Pattern和Matcher是class,Pattern是一个正则表达式经编译后的表现模式,Matcher是一个状态机器。

Pattern compile(String regex) / compile(String regex, int flags)

静态方法,把一个正则表示式编译后,生成一个Pattern对象实例

Patter p = Pattern.compile("d{2}");
p.pattern();  //返回 d{2}
matcher(CharSequence input)

生成一个Matcher对象。Matcher类时不能直接实例化的,可以通过此方法实例化一个Matcher对象,从而进行各种操作。

matches(String regex, CharSequence input)

直接使用正则表达式对输入的字符串进行匹配,匹配成功则返回true

split(CharSequence input) / split(CharSequence input, int limit)

使用正则表示式,进行字符串分割

Matcher find() / find(int start) / lookingAt()/matches()

进行匹配操作,如果匹配成功,这三个方法都会返回true.其中,find()是在源字符串中找出和正则表达式匹配的字符串。find(int start)是从start位置开始寻找下一个匹配的字符串。lookingAt()是从源字符串的第一个字符进行匹配。matches()是对整个源字符串中进行匹配,如果都匹配才返回true。

String str="abcd23"

Pattern.matches("w{4}d{2}",str); //快捷方式

Pattern p = Pattern.compile("w{4}d{2}");
Matcher m = p.matcher(str); //和上面的方法等价
m.matches();
group() / start() / end()

当使用find() / find(int start) / lookingAt() / matches()进行匹配操作并返回true之后,才可以执行者三个方法获取更加详细的信息。
group():返回匹配到的字符串
start():返回匹配到的字符串在源字符串中的位置
end(): 返回匹配到的字符串的最后一个字符在源字符串中的位置
另外这几个方法分别有一个重载方法 group(int i) / start(i) / end(i), 分别用于对第i个捕获组进行对应的操作

replaceAll(String replacement) / replaceFirst(String replacement)

替换源字符串中和正则表达式匹配的子字符串。其中replaceAll是替换所有的,replaceFirst是替换第一个匹配的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70539.html

相关文章

  • PHP DateTime类计算早于改历时间的坑

    摘要:并且在实际使用中,早于改历之前的时间并没用格里历表式的习惯,都是换成儒略历表达,所以类这样的设计,等于说早于改历的时间基本不能用的,还是得自己另外处理一遍。 时间戳只能计算 1970 年后的时间,由于需要计算更早的日期,发现 PHP 还有提供一个 DateTime类,但在使用中发现有问题。 1582年,因为旧历精度问题,导致已经积累了十天的偏差,,所以此年10月5号~10月14号跳过,...

    李世赞 评论0 收藏0
  • [Leetcode] Implement Trie 实现前缀树

    摘要:压缩前缀树其实就是将所有只有一个子节点的节点合并成一个,以减少没有意义的类似链表式的链接。然后我们开始遍历这个前缀树。 Implement Trie Implement a trie with insert, search, and startsWith methods. Note: You may assume that all inputs are consist of lowe...

    jsliang 评论0 收藏0
  • 学习笔记: JS字符串

    摘要:我们在中操作字符串,往往是将它转换为数组,再操作,如字符串的反转字符串常用的一些方法判断一个字符串是否以某个字符串开头返回在字符串中首次出现的位置从位置开始查找,如果不存在,则返回。如果则查找整个字符串如同传进了。 我们在js中操作字符串,往往是将它转换为数组,再操作,如: split().reverse().join() 字符串的反转 showImg(https://segmentf...

    CastlePeaK 评论0 收藏0
  • 使用Spring annotation编程的快感

    摘要:创建应用对象之间协作关系的行为通常称为装配中有三种装配的方法在中显式配置在中显式配置隐式的发现机制和自动装配这儿要说的就是第三个自动发现与装配,它会带来编程的快感。 一、前言 Spring的Bean Factory所实现的IoC轻量级容器,可以很方便地让大家基于POJO开发JavaEE应用程序。 创建应用对象之间协作关系的行为通常称为装配 Spring中有三种装配Bean的方法 在X...

    BWrong 评论0 收藏0
  • 正则表达式

    摘要:但不管是那种匹配都必须保证匹配满足正则表达式基本条件。在正则表达式中,通过分组可以在一个完整的模式中定义子模式。在同一个正则表达式的后部分可以引用前面的子表达式。 预定义字符类 .(点好): 匹配除了换行符和其他Unicode行终止符(如回车符)之外的任意字符,等价于[^ ] w: 匹配任何ASII单字字符,等价于[a-zA-Z0-9_] W: 匹配任何非ASII单字字符,等价于[^...

    k00baa 评论0 收藏0

发表评论

0条评论

zoomdong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<