正则表达式(学习一些特点符号的应用):符合一定规则的表达式
作用:用于专门操作字符串
特点:用于一些特定的符号来表示一些代码操作,简化书写
好处:可以简化对字符串的复杂操作
弊端:符号定义越多,正则越长,阅读性越差
注:java中 \ 具有转义功能,在正则表达式中应成对出现
具体操作功能:
1、匹配:String matches方法
2、切割: String split();
3、替换:String replaceAll();
4、获取:将字符串中符合规则的子串取出
字符类 |
|
[abc] | a、b 或 c(简单类) |
[^abc] | 任何字符,除了 a、b 或 c(否定) |
[a-zA-Z] | a 到 z 或 A 到 Z,两头的字母包括在内(范围) |
[a-d[m-p]] | a 到 d 或 m 到 p:[a-dm-p](并集) |
[a-z&&[def]] | d、e 或 f(交集) |
[a-z&&[^bc]] | a 到 z,除了 b 和 c:[ad-z](减去) |
[a-z&&[^m-p]] | a 到 z,而非 m 到 p:[a-lq-z](减去) |
预定义字符类 |
|
. | 任何字符(与行结束符可能匹配也可能不匹配) |
\d | 数字:[0-9] |
\D | 非数字: [^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 单词字符:[a-zA-Z_0-9] |
\W | 非单词字符:[^\w] |
Greedy 数量词 |
|
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
叠词:(.)\1(判断二个连续相同的字符)(.)自动分组,1是引用前面的那个字符
将规则封装成一个组,用{}完成,组的出现都有编号。从1开始,想要使用自己有的组可以通过\n(n就是组的编号)的形式来获取
在表达式 ((A)(B(C)))(从左边开始数左括号的个数为组数) 中,存在四个这样的组:
1 ((A)(B(C)))
2 \A
3 (B(C))
4 (C)
str.replaceAll("aaaaknbhjhhh" ,"(.) \\ 1+", "$1");
注:“$1”在外面获取前面定义的组
获取操作步骤:
1、将正则表达式封装成对象
2、让正则对象和要操作的字符串相关联
3、关联后,获取正则匹配引擎
4、通过引擎对符合规则的子串进行操作,比如取出。
同一个匹配器使用同一个指针,当调用matches()后,若为假,则指针留在为假的后一位
正则表达式练习
获取网页中的文件