正则表达式(Regular Expressions) ---字符串处理利器
基于java:【java中双反斜杠等于一个反斜杠】
用途:
字符串匹配
字符串查找【基于匹配】
字符串替换【基于查找】
例子:
判断ip地址是否正确
从网页中揪出email
从网页中揪出连接等
类:
java.lang.string
java.util.regex.pattern
===================================华丽丽分割线====================================
符号 作用 例子
1、'.' 匹配 一个字符 ’ . ‘ 匹配 a
2、 d 匹配 [0-9]数字 ‘aaaa’
3、 * 匹配零个或多个
4、 + 匹配一个或多个
5、 ? 匹配一个或零个
6、[]
7、{}
几个需要注意的例子
‘a’ ‘.’ true
'aa' 'aa' true
'aaaa' 'a*' true
'aaaa' 'a+' true
'aaaa' 'a?' true
'' 'a?' true 零宽度匹配
'a' 'a?' true
'545787' '\d{3,100}' true
'192.168.0.aaa' '\d{1,3}\.\d{1,3}\.\d{1,3}' false
'192' '[0-2][0-9][0-9] true
范围
‘a’ ' [abc] ' true
‘a’ '[^abc]' false ^取反除了abc
‘A’ ' [a-zA-Z]' true
‘A’ ' [a-z]|[A-Z]' true
‘A’ '[a-z[A-Z]]' false 并集
‘R’ '[A-Z]&&[RGF]'' true 取交集
d [0-9]
D [^0-9]
s [
x0Bf
]
S [^s]
w [a-zA-Z_0-9] 比如用户名注册匹配
W [^w]
例子
‘
'’ '\s{4}' true
‘’ '\S' false
'a_8' ''\'w{3}' true
'abc888&^%' '[a-z]{1,3}\d+{&^#% } true
'\'其中一个反斜线防止转义 '\\'匹配时反斜线需要两个表示的时候又需要两个 即匹配时为匹配 表示时为表示 反斜杠灾难。。。这个学起来有点纠结 true
边界匹配
‘^’特别注意……^位于中括号里面就是取反中括号外面就是什么什么的开始
^ 一行的开始
$ 一行的结束
单词的边界
B 不是单词的边界【单词边界-空格空白字符 特殊字符换行的时候】
A 真个输入的起始位置
G 上一次匹配结束的位置
结束的位置
z
例子
‘hello sir‘ ’ ^ h . * '
''. *ir$'
' ^h[a-z]'{1,3} o\b.*'匹配
‘hellosir’ ' ^h[a-z]'{1,3} o\b.*'不匹配因为没有单词边界
空白行
或者 ‘ ’
‘
’ 匹配 ''^[\s $$ [^\n]] *\n$'' 解释:开头的是空白字符并且不是换行符 最后结束的是换行符然后是行的末尾【联系取交集】
*号是空白字符出现0次或者多次
{4} 表示四个数字
{1,4}表示范围
练习
匹配电子邮箱地址: ‘[\w[.-]]+|[0-9]+@\.[\w[.-]]+''
m.find 找子字符串