JAVA正则表达式总结

1.字符类([]只能表示一个字符,不能表示多个,如[ab]表示ab中的一个而不是表示连起来的ab)

. 任意字符

[abc] a、b、c中的任意一个

[^abc] a、b、c之外的任意字符

[a-zA-Z] a到z或A到Z中的任意一个字符

[abc[hij]] 相当于[abchij]

[a-z&&[hij]] a-z与hij的交,hij中的一个

\s 空白(空格,tab,换行,换页,回车)

\S 非空白([^\s])

\d  数字0-9

\D 非数字[^0-9]

\w  词字符[a-zA-Z0-9]

\W 非词字符[^\w]


2.逻辑操作符

XY Y在X后面

X|Y X或Y

(X) 组,可以用group(int group)方法来获得相应的组,组号为0表示整个表达式,组号为1表示第一队括起来的组,依此类推


3.量词

? 0个或1个

+ 至少一个

* 0个或多个

X{n} 恰好n个X

X{n,} 至少n个X

X{n,m} n到m个X


4.匹配模式

有三种匹配模式:

(1)贪婪型

默认都是贪婪的,比如有字符串abcabc,当使用正则表达式(.*c)时只能匹配到abcabc,而不是abc

(2)勉强型

用?表示,加在量词后面。对于字符串abcabc,使用正则表达式(.*?c),?表示勉强型,表示匹配满足模式所需的最少字符,可以匹配到两个abc

(3)占有型

只在java中能用,防止回溯,用+表示,加在量词后面


5.用法

java中编写正则表达式要注意转义

(1)直接使用String类的matches()方法,效率较低

(2)先用Pattern.compile()方法编译正则表达式

Pattern p = Pattern.compile(regex)

接下来使用Pattern对象的matcher()方法,生成一个Matcher对象

Matcher m = p.matcher(input),input为字符串,可以为"",使用""可以为循环提供一定的性能优化,可以在创建Matcher对象后用reset()重置字符串

(3)matcher.find()可用来查找多个匹配,如可用

while(m.find()){

System.out.print(m.group());

}

来查找所有匹配的字符串。

matcher.find(i)表示从位置i开始匹配

(4)matcher.group(i)表示第i个分组,i从1开始,组号为0表示整个表达式,组号为1表示第一队括起来的组,依此类推

(5)start()表示起始位置的索引,end()表示最后字符的索引加1的值

start(i)表示分组i的起始位置的索引,end(i)表示分组i的最后字符的索引加1的值

(6)java String replaceAll()分组

用$表示分组,如temp = temp.replaceAll("/([A-Za-z])[A-Za-z]", "/$1");


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值