1.涉及到的三个类:java.lang.String/java.util.regex.Pattern/java.util.regex.Matcher
2:String 类有几个相关的方法
1.boolaen matches(String regex);
2.String replaceAll(String regex,String replacement)
3.Pattern(指定匹配模式)
常用的三个指定匹配模式的静态常量
Pattern.CASE_INSENSITIVE/忽略US-ASCII字符集大小写
Pattern.COMMENTS/忽略空格字符(空格,tab,回车等)
Patterm.MULTLINE/这种模式"^"和"$"分别匹配一行的开始和结束.默认情况下,这两个表达式只匹配字符串的开始和结束
常用方法:
Pattern compile(String regex) /编译一个正则表达式
Pattern compile(String regex,int flags)/后面一个参数指定匹配模式
String[] split(String regex)/按指定模式划分
static Matcher matcher(CharSequence input)/将匹配结果封装在Matcher里
里面还有个特殊的静态方法:
boolean Pattern.matches(String regex,String input)/返回是否匹配
字符匹配规则:
[]/一个大括号表示匹配一个字符
[ab]/表示a,b选一个
[^abc]/[]括号里的^表示非
[a-d]/a到d里选一个
[a-zA-Z]/a到z或者A到Z里选一个
[a-d[m-p]]/等价[a-dm-p]
[a-z&&[def]]/a到z并且是def中的一个
[a-z&&[^bc]]/
[a-z&&[^m-p]]/
特殊系列字符:
.:任意字符
\d:表示数字[0-9]
\D:表示非数字[^0-9]
\s:空格字符[\t\n\x0B\f\r]
\S:非空格字符
\w:文字字符[0-9a-zA-Z|_]
\W:非文字字符
功能字符系列:
^:表示一行的开始
$:表示一行的结束
?:表示一个或更少
*:表示0或更多
+:表示1或更多
{n}表示n次
{n,}表示至少n次
{n,m}表示至少n次至多m次
():表示分组
4:Matcher类:用于实现不同的匹配查找方式
里面常用的构造方法:
boolean matches();/能否匹配(指针会移动)
boolean find();/能否找到子串(指针会移动)
boolean lookingAt()/从头开始找子串(指针会移动)
void reset(int tag)/设置匹配指针位置,参数默认0
String group(int tag)/返回找到的子串(子串里可以分组),参数表示组,默认0(表示整个子串)
int end()/返回匹配的起始位置(前提是能匹配到,否则抛出异常)
int start()/返回匹配的末尾
String replaceAll(String replacement)/将所有匹配的子串替换为replacement,返回更改后的字符串
String replaceFirst(String replacement)/
Matcher appendReplacement(StringBuffer sb,String replacement)/将当前找到的子串替换成replacement(最后的字符串保存在sb里)
StringBuffer appendTail(StringBuffer sb)/将原字符串后面没匹配的末尾串加到sb末尾