正则表达式学习笔记

1、操作正则表达式的方法:matches();split();replaceAll();

2、\\b表示匹配的开始或结束。

3、正则表达式获取:

String str="da jia hao,ming tian bu fang jia!";

String regex="\\b[a-z]{3}\\b";

Pattern p=Pattern.compile(regex);

Matcher m=p.matcher(str);

while(m.find()){

syso(m.group();

}

4、一个方法中第二个参数用到第一个参数中带括号的正则时要加$符号加数字。

5、(.)\\1+表示第1组的任意字符出现一次或多次。例:str="zhangsantttLisimmmm".replaceAll("(.)\\1+",$1),结果为:zhangsantLisim.(\\1表示在使用第一组中的内容)

例:str="zhangsantttLisimmmm".replaceAll("(\\p{Lower}{8})\\p{Lower}{3}(\\p{Lower}{8})","$1***$2");.结果为:zhangsan***Lisimmmm.(组会按照左边括号出现的顺序自动编号)

6、一个正则表达式后面有多个限定修饰符时,以第一个为准,例:"\\d{1}{2}"用"12"来匹配的话为false,用"1"来匹配就是true,*前面不能有别的限定修饰符,运行会报错。

7、\\0表示引用整个被匹配的正则表达式本身,但是不能用于指向自身,只能用在替换操作中。

8、当对组使用重复操作符时,缓存里后向引用内容会被不断刷新,只保留最后匹配的内容。例如:([abc]+)=\\1将匹配“cab=cab”,但是([abc])+=\\1却不会。因为([abc])第一次匹配“c”时,“\\1”代表“c”;然后([abc])会继续匹配“a”和“b”。最后“\\1”代表“b”,所以它会匹配“cab=b”。

9、当用“()”定义了一个正则表达式组后,正则引擎则会把被匹配的组按照顺序编号,存入缓存。当对被匹配的组进行向后引用的时候,可以用“\数字”的方式进行引用。﹤﹤\1﹥﹥引用第一个匹配的后向引用组,﹤﹤\2﹥﹥引用第二个组,以此类推,﹤﹤\n﹥﹥引用第n个组。向后引用会降低引擎的速度,因为它需要存储匹配的组。如果你不需要向后引用,你可以告诉引擎对某个组不存储。例如:﹤﹤Get(?:Value)﹥﹥。其中“(”后面紧跟的“?:”会告诉引擎对于组(Value),不存储匹配的值以供后向引用。

10、后向引用不能用于字符集内部。﹤﹤(a)[\1b]﹥﹥中的﹤﹤\1﹥﹥并不表示后向引用。在字符集内部,﹤﹤\1﹥﹥可以被解释为八进制形式的转码。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值