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的简写