java之正则表达式菜鸟学习

本文详细介绍Java中正则表达式的应用,包括Pattern和Matcher类的功能及使用方法,并提供了具体的例子来展示如何进行字符串匹配、查找及替换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java api对于正则的支持

java.util.regex 包下面
一个接口两个类,一个异常:
接口 
MatchResult

 
Matcher
public final class Matcher  extends Object implements MatchResult

通过解释 Patterncharacter sequence 执行匹配操作的引擎。

通过调用模式的 matcher 方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作:

  • matches 方法尝试将整个输入序列与该模式匹配。

  • lookingAt 尝试将输入序列从头开始与该模式匹配。

  • find 方法扫描输入序列以查找与该模式匹配的下一个子序列。

每个方法都返回一个表示成功或失败的布尔值。通过查询匹配器的状态可以获取关于成功匹配的更多信息。

boolean matchers()
boolean lookingAt()
boolean find()
boolean find(int start)
Pattern
public final class Pattern  extends Object  implements Serializable 

实现Serializable 接口,可序列化。

正则表达式的编译表示形式。

指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。
执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。

因此,典型的调用顺序是

 Pattern p = Pattern.compile("a*b"); //指定为字符串的正则表达式必须首先被编译为此类的实例。该模式可以被共享。
 Matcher m = p.matcher("aaaaab");//参数为需要匹配的任意字符序列(CharSequence)
 boolean b = m.matchers();
CharSequence 接口lang包里的
从CharBuffer,String,StringBuffer,StringBulider类中抽象出了字符序列的一般化定义
interface CharSequence(){
    charAt(int i);
    length();
    subSequence(int start,int end);
    toString();
}

在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。语句

 boolean b = Pattern.matches("a*b", "aaaaab");
等效于上面的三个语句,尽管对于重复的匹配而言它效率不高,因为它不允许重用已编译的模式。

此类(Pattern)的实例是不可变的,可供多个并发线程安全使用。Matcher 类的实例用于此目的则不安全。

String类对于regex的支持

split()方法:
public String[] split(String regex)
public String[] split(String regex,int limit)//它允许你限制字符串分割的次数。
replace()方法:
  public String replaceFirst(String regex,String replacement)
public String replaceAll(String regex, String replacement)
                     
matches()方法
public boolean matches(String regex)
告知此字符串是否匹配给定的正则表达式

调用此方法的 str.matches(regex) 形式与以下表达式产生的结果完全相同:

Pattern.matches(regex, str)

                      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值