专题3:正则表达式

1.正则表达式(RegularExpressions)是字符串处理利器

2.RegularExpressions的用途:①字符串匹配(严格讲字符匹配)  ②字符串查找   ③字符串替换

3.正则表达式涉及到的三个类:①java.lang.String ②java.util.regex.Pattern 需要符合的模式 ③java.util.regex.Matcher 用这个模式去匹配一个字符串的结果

4.java.lang.String的方法 boolean matches(String regex)

5.java.util.regex.Pattern对象的方法

   static Pattern compile(String regex) 预先编译以提高速度

   static Pattern compile(String regex,int flags)  静态常量CASE_INSENSITIVE 忽略大小写

   Matcher matcher(CharSequence input) 

6.java.util.regex.Matcher对象的方法(注意无论是使用matches()还是find(),无论结果是true还是false,已经被识别过的符合的字符不会被再次识别,除非重置Matcher)

   boolean matches() 匹配整个字符串

   boolean find() 匹配子串,下一次调用find方法时从本次找到的子串的末尾后开始找

   Matcher reset() 重置Matcher

  boolean lookingAt() 从头找起,即使开头已经被识别过,还是会从头找,只要开头符合,就会返回true,不会匹配整个字符串(找之前会重置Matcher)

  int start() 本次查到的字符串的起始位置

  int end() 本次查到的字符串的结束位置的后一个位置  注意:即使字符串已经到末尾,仍然会返回后一个位置

  String group() 返回找到的子串

  String replaceAll(String replacement) 替换所有符合正则表达式规则的子串为字符串replacement

  Matcher appendReplacement​(StringBuffer sb, String replacement) 替换找到的符合正则表达式规则的子串为字符串replacement(注意必须和find()方法一起用,其本身并不能查找)

  StringBuffer appendTail​(StringBuffer sb)

7.ctrl+shift+/  注释  ctrl+shift+\ 取消注释

8.理解正则表达式中各种符号的含义

   .     任意字符

   X*     零个或者多个X(包括一个)

   X+    一个或者多个X

   X?    一个或者零个

   X{n}    正好出现n次

   X{n,}    至少出现n次

   X{n,m}    至少出现n次,但不超过m次

 9.正则表达式中的"."和"\."的区别  "."表示任意字符  "\."表示真的"."    因为分两步进行  字符串是解析第一次,正则表达式解析第二次

10.正则表达式中的大括号和中括号表示范围不同  一个中括号中无论写多少内容都只匹配一个字符

11.中括号使用举例

   [abc]          abc中的一个

   [^abc]           不是abc中的一个

   [a-zA-Z]          a-z或者A-Z 即小写字母或者大写字母

   [a-z]|[A-Z]       a-z或者A-Z 即小写字母或者大写字母

   [a-z[A-Z]]        a-z或者A-Z 即小写字母或者大写字母

   [A-Z&&[RFG]]      A-Z并且是RFG中的一个

12.

13."\\".matches("\\\\");  理解匹配反斜线  因为会分两步进行

14.了解了解POSIX风格

15.边界匹配

 举例:

"hello world".matches("^h[a-z]{1,3}o\\b.*"); //true

"helloworld".matches("^h[a-z]{1,3}o\\b.*"); //false

边界匹配可以和".*"配合

16.空白行匹配

" \\n".matches("^[\\s&&[^\\n]]*\\n$");

17.邮箱匹配

"[email protected]".matches("[\\w[.-]]+@[\\w[.-]]+\\.\\w+");  注意中括号中的"."表示的是真的点号,并且无需添加反斜线

18.Matcher对象使用完成后注意重置

19.正则表达式中使用小括号进行分组,组号从1开始,从正则表达式的左侧开始数,第一个小括号为第一组,依此类推

20.引入java.util.regex.*包,引java.util.*包没有用

21.三种不同的quantifiers(Greedy Reluctant Possessive)  quantifier 数量修饰词  

Greedy 贪婪的(默认) 

Reluctant 不情愿的(?)  

Possessive 独占性的(+)

22.non-capturing groups  不捕获组

小括号中以问号开头是不捕获组的特征

23.back refenrences  向前引用

24.flags的简写

    

猜你喜欢

转载自www.cnblogs.com/yxfyg/p/12598353.html