正则表达式

来源:互联网 发布:金华职业技术学院网络 编辑:程序博客网 时间:2024/06/16 13:03
regex正则表达式:
专门用于操作字符串的,作用于字符串的一个正确的规则的表达式。
好处:用了一些符号代表代码,书写起来比较简单。
弊端:因为都是一些符号组成的表达式,所以可读性不高,而且先要把符号学完才行,才能看得懂。


正则对字符串的常见功能操作:

1,匹配
其使用的就是String类中的matchs方法,返回结果是boolean
2,切割
其使用的就是String类中的split方法,返回结果是String[]数字
使用叠词作为分隔符:
正则规则的复用..想复用,先封装,正则封装用小括号完成
//封装完以后有编号,从1开始,规则中被小括号封装的称之为组,直接通过编号调用对应的组
//调用方式直接写已有的组的编号前面加上
// "(.)\\1+":使用已有的第一组内容。原则:先有组,才可以使用对应的编号调用。
3,替换
使用的就是replaceAll方法,结果是一个新的字符串。
4,获取
获取其他三个功能内部最终使用的都是Pattern正则表达式对象。
现在需要其他功能时,字符串String类中没有对应的方法,只能找Pattern对象。
pattern对象使用的原理:
1,使用正则表达式字符串编译成正则对象pattern。
2,通过pattern对象获取Matcher对象(匹配器对象)。
3,通过匹配器对象对字符串进行规则的匹配,结果都在匹配器中。
4,通过匹配器对象的功能获取结果。

pattern:
//去除由三个字母组成的单词:
String str = "da jia zhu yi la, ming tian fang jia";
String regex="\\b[a-zA-Z]{3}\\b";
//1,将正则表达式的字符串格式先通过pattern中的compail方法编译成pattern正则表达式对象,将正则字符串表达式封装成封装成对象。
Pattern p = Pattern。compile(regex);
//2,想要使用这个规则进行操作,还需要通过Matcher方法和指定的字符串关联,并获取匹配器对象Matcher。真正将规则作用到字符串的对象上的是匹配器Matcher.
Matcher  m = p.matcher(str);
//3,用匹配器对象Matcher的功能(方法)对字符串进行操作:
通过find查找并通过group方法打印。
while(s.find()){//查找  每查找一次  输出一次 System.out.println(s.group());
}



类 Pattern:
字符 
x 字符 x 
\\ 反斜线字符 
\0n 带有八进制值 0 的字符 n (0 <= n <= 7) 
\0nn 带有八进制值 0 的字符 nn (0 <= n <= 7) 
\0mnn 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7) 
\xhh 带有十六进制值 0x 的字符 hh 
\uhhhh 带有十六进制值 0x 的字符 hhhh 
\t 制表符 ('\u0009') 
\n 新行(换行)符 ('\u000A') 
\r 回车符 ('\u000D') 
\f 换页符 ('\u000C') 
\a 报警 (bell) 符 ('\u0007') 
\e 转义符 ('\u001B') 
\cx 对应于 x 的控制符 
字符类 
[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 次 

Matcher方法:
compile(String regex)将给定的正则表达式编译到模式中。

1 0