加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式学习笔记

发布时间:2020-12-13 22:51:27 所属栏目:百科 来源:网络整理
导读: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(

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、表示引用整个被匹配的正则表达式本身,但是不能用于指向自身,只能用在替换操作中。

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﹥﹥可以被解释为八进制形式的转码。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读