正则表达式

来源:互联网 发布:淘宝卖家版怎么登陆 编辑:程序博客网 时间:2024/06/10 22:52

正则表达式:

操作字符串的一种规则,使用了特殊的符号表示

符号:

预定义字符类\

.        任何字符(与行结束符可能匹配也可能不匹配)

\d      数字:[0-9]

\D     非数字: [^0-9]

\s      空白字符:[ \t\n\x0B\f\r]

\S     非空白字符:[^\s]

\w     单词字符:[a-zA-Z_0-9]

\W    非单词字符:[^\w]

注意:任何预定义字符没有加上数量词之前只能匹配一个字符

范围表示[ ]

[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(交集)

注意:没有数量词也只能匹配一个字符

Greedy 数量词{ }

X?         X,一次或一次也没有

X*         X,零次或多次

X+        X,一次或多次

X{n}       X,恰好n次

X{n,}        X,至少n次

X{n,m}       X,至少n次,但是不超过m次

边界匹配器

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

应用:

匹配 :

matches(String regex)          当且仅当字符串指定的正则表达式匹配返回true

切割: 

split()
为了提高规则复用,用()进行分组,组号从1开始,可以通过编号来引用组所匹配到的内容。需要对编号数字进行转义:\\1就代表获取1组匹配到的内容。
例:
String[] arr = str.split(" +");     \\根据空格进行切割String[] arr = str.split("(.)\\1+");     \\根据重叠词进行切割

替换 :

replaceAll(String regex, String replacement
例:
String[] arr = str.replaceAll("(.)\\1+","$1");    \\把重叠词替换单个词
在replaceAll方法正则的外部引用组的内容要使用"$组号"

查找 :

查找不能使用string直接使用,需要使用对象:
  1. Pattern(正则对象)
  2. Matcher(匹配器对象)
匹配器方法:
  1. find()    通知匹配器去匹配字符串,查找符合规则的字符串。返回true,false
  2. group()    获取符合规则的子串(在使用group方法之前,必须要先用find方法查找,否则报错)
指定为字符串的正则表达式必须先被编译为此类的实例,然后可将得到的正则对象匹配任意的字符串用于创建Matcher对象,执行匹配所设计的所有状态都驻留在匹配器中。典型调用顺序为:
Pattern p = Pattern.compile("正则表达式");   \\字符串的正则编译成Pattern对象
Matcher m = p.matcher("aaaaab");     \\使用正则对象匹配字符串产生一个Matcher对象
boolean b = m.matches();




原创粉丝点击