[Java]正则表达式

创建正则表达式的模式对象
使用Pattern.compile()静态方法创建Pattern对象。

Pattern pattern = Pattern.compile("//w");   //compile的参数是字符串形式的正则表达式

Pattern的相关常用方法

matcher()

使用Pattern.compile()静态方法创建Pattern对象后,再使用Pattern对象的matcher()方法产生一个Matcher对象。Matcher类中提了大量的用于模式匹配的方法。
接下来我们以一个实例来介绍Matcher对象的find()、group()、start()以及end()方法:

public static void main(String[] args) {
        String str = "abcabcabcabc";
        Pattern pattern = Pattern.compile("abc+");   //compile的参数是字符串形式的正则表达式
        Matcher matcher = pattern.matcher(str);     //matcher的参数时要进行匹配的主串
        while (matcher.find()) {
            System.out.println("匹配结果: " + matcher.group() + "起始位置: " + matcher.start() + "结束位置" + (matcher.end() - 1));
        }
    }

find()方法将依照次序匹配主串中的全部内容,发现一个匹配结果就返回true,如果没有能够匹配的子串将返回false。group()方法将返回上一次匹配成功的子串,如果在发生匹配之前调用或者在匹配失败后调用均会抛出异常,start()和end()方法则会返回上一次匹配成功的子串在主串中的起始位置的索引以及末尾位置的索引加一。要注意的是find匹配成功后的下一次匹配总是从matcher1.last()处开始。

split()

Pattern的split()方法产生的返回值与String的split一样只是参数用法略有区别。
String的split方法:
public String[] split(String reglex)
public String[] split(String reglex, int limit)
Pattern的split方法:
public String[] split(String str)
public String[] split(String str, int limit)
可以看到两个类的方法参数的区别仅在于第一个参数String中传入的是字符串形式的正则表达式,而Pattern传入的则是进行模式匹配的主串。

Pattern标志
compile方法还有一个重载方法:compile(String reglex,int flag)。此方法允许我们指定一个标志来采用不同的匹配规则。flag的取值有如下几种:

flag取值效果
Pattern.CANON_EQ仅当两个字符进行规范分解后完全相等才会匹配。例如:\u030A会匹配?,默认模式下不会匹配
Pattern.CASE_INSENSITIVE(?i)与Pattern.UNICODE_CASE连用可以忽略大小写
Pattern.COMMENTS(?x)空格符被忽略,以#开始的字符串被看作注释忽略
Pattern.DOTALL(?s)"."匹配所有字符,包括行终止符。默认情况下不会匹配行终止符
Pattern.MULTILINE(?m)“^”匹配行开始以及字符串的开始,“$”匹配行的结束以及字符串的结束,默认情况下"^"进匹配字符串开始“$”进匹配字符串结束
Pattern.UNICODE_CASE(?u)与Pattern.CASE_INSENSITIVE连用可以忽略大小写
Pattern.UNIX_LINES(?d)“.”、"^“和”$"进匹配行终止符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

M FS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值