正则表达式

来源:互联网 发布:淘宝手机版店招制作 编辑:程序博客网 时间:2024/06/05 22:34

正则表达式:就是用于操作字符串的一个规则,正则表达式的规则使用了特殊的符号表示。

预定义字符类
.表示任意字符
\d表示数字0~9
\D表示非数字
\s表示空白字符:[ \t\n\x0B\f\r]
\S表示非空白字符:[^\s]
\w表示单词字符:[a-z A-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次范围表示[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(交集) 注意:范围词里面不管内容有多长,没有数量词的配合都只能匹配一个字符而已

单词边界匹配器
\b 单词边界匹配器只是代表了单词的开始或者是结束部分,不匹配任何的字符

2.根据重叠词进行切割。
public static void splitDemo2()
{
String str = “sdqqfgkkkhjppppkl”;
String[] arr = str.split(“(.)\1+”);
for(String s : arr)
{
System.out.println(s);
}
}

()分组:分组的目的是为了让正则的内容被复用起来。组号是从1开始,组号不能被指定
\1:引用第一组所匹配到的内容

应用:
匹配:matches():

切割:split():替换:replaceAll(String regex,String replacement)查找:需要使用Pattern(正则对象),Matcher(匹配器对象)指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。 

因此,典型的调用顺序是:
Pattern p = Pattern.compile(“a*b”);
Matcher m = p.matcher(“aaaaab”);
boolean b = m.matches();

匹配器要使用到的方法:
1.find() 通知匹配去匹配字符串,查找符合规则的字符串 如果存在,返回true
2.group() 获取符合规则的子串

注意:使用group方法的时候,一定要先使用find方法

0 0
原创粉丝点击