正则表达式
正则表达式
- 适用的类:
Pattern/Matcher
这两个类中都提供了CharSequence接口
该接口的实现类包括CharBuffer,String,StringBuffer,StringBuilder
- 适用的方法
Matcher:find--返回字符串中是否包含与Pattern匹配的子串
group--返回上一次匹配的子串
start--返回上一次匹配的开始位置
end--返回上一次匹配的结束位置+1
lookingAt--返回boolean 开头是否为pattern
matches--整个目标字符串是否与pattern匹配
reset--将现有的Matcher对象用于一个新的字符串
将需要匹配的正则表达式利用Pattern类的compile方法编译成为Pattern类对象
Pattern p=Pattern.compile(regex);
使用该Pattern对象的matcher方法创建Matcher类对象
Matcher m=p.matcher(string);
再利用Matcher对象的方法来判断
if(m.matches()) { System.out.println("满足正则表达式的匹配"); }
- 常用的是String中的几种用法:
String:replaceFirst(regex,替换的String)
replaceAll(regex,替换的String)
match(regex)
String[]:split(regex)
- 量词
{}--前面子表达式的出现额度
* --可以出现0次或多次
+ --前面子表达式可以出现1次或者多次
?--前面子表达式可以出现0次或者1次
一般情况下默认使用贪婪模式,表达式会一直匹配下去,直到无法匹配
勉强模式(加上?)最小匹配模式
占有模式(加上+)只有java支持,很少用
- 特殊字符
$ --匹配结尾
^ --匹配开头
()--标记开始和结尾的位置
[]--确定中括号这个表达式开始和结束位置
. --匹配除了\n以外的所有单字符
\ --转义下一个字符
| --或
\b --单词边界
\B --非单词边界
\A --输入的开头
\G --前一个匹配的结尾
\Z --最后的结束符
\z --输入的结尾
- 合法字符
x --任意合法字符
\0mnn --8进制
\uhhhh \xhh--16进制(\xhh不常用)
\t --制表符
\n --换行符
\r --回车符
\f --换页符
\a --报警符
\e --escape
\cx --控制符,表示Ctrl+x,x为a-z
- 预定义字符(通配符)
. --任意字符
\d --0-9
\D --非数字
\s --空白字符
\S --非空白字符
\w --数字、字母、下划线
\W --非单词字符
使用时需要注意,应写为\\w的格式
- 方括号表达式
[az]--字符为a或者z
[a-z]--字符范围为a-z
[^a-z]--除了a-z以外的字符
[a-d&&[h-n]]--与运算
[a-d[m-p]]--并运算
圆括号用于组成子表达式,|用来表示或
正则表达式使用的一个简单例子:
匹配字符串中的s开头的单词,并替换为summer
String s="now it's sping,but today is so cold!"; String a=s.replaceAll("s\\w+","summer"); System.out.println(a);