正则表达式学习笔记
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﹥﹥可以被解释为八进制形式的转码。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- objective-c – 确定iPhone上沙箱允许的可用磁盘
- ruby-on-rails-3 – Rails 3.获取最新更新
- ruby – 使用SaxMachine解析大文件似乎是将整个文
- iphone – 使用MKCoordinateRegion在NSString纬度
- Postgresql 9.4 判断表是否存在...
- C#中的Unicode到字符串转换
- oracle中rownum和row_number()
- c – std :: async – std :: launch :: async |
- c – 给定范围内的完美正方形:循环的异常执行
- oracle-sqldeveloper – SQL Developer多表视图