概述
符合一定规则的表达式
专门用于操作字符串
特点:
用于一些特定的符号来表示一些代码操作,这样就可以简化书写
所以学习正则表达式,就是在学习一些特殊符号的使用
好处:
可以简化对字符串的复杂操作
弊端:
符号定义越多,正则越长,阅读性越差
规则
下面只是一些简单的规则,具体详细规则查询API文档
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(交集)[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]
组和捕获
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
1 ((A)(B(C)))2 \A3 (B(C))4 (C)组零始终代表整个表达式。
Pattern与Matcher
java.util.regex包中定义了正则操作的相关对象
Pattern:正则表达式的编译表现形式,内部封装了多种正则模式
Matcher:正则匹配引擎,它是基于Pattern产生的,每个Pattern对象可与多个字符串进行匹配,所以可以产生多个匹配器Matcher
典型的调用顺序是
1: Pattern p = Pattern.compile("a*b"); 2: Matcher m = p.matcher("aaaaab"); 3: boolean b = m.matches();自己不喜欢的人,可以报之以沉默微笑;