"景先生毕设|www.jxszl.com

java Pattern类和Matcher类介绍

2023-09-12 15:40编辑: www.jxszl.com景先生毕设
                                 java Pattern类和Matcher类介绍
Pattern类用于创建一个正则表达式,也可以说是创建一个匹配模式,可以通过两个静态方法创建:compile(String regex)和compile(String regex,int flags),
其中regex是正则表达式,flags为可选模式(如:Pattern.CASE_INSENSITIVE 忽略大小写)
public final class java.util.regex.Pattern是正则表达式编译后的表达法。
下面的语句将创建一个Pattern对象并赋值:Pattern pat = Pattern.compile(regEx);
Pattern类是final类,而且它的构造器是private。这里的结论是:Pattern类不能被继承,我们不能通过new创建Pattern类的对象。
 因此在Pattern类中,提供了2个重载的静态方法,其返回值是Pattern对象(的引用)


<
常用正则表达式
构造 匹配 \p{InGreek} Greek 块(简单块)中的字符
    \p{Lu} 大写字母(简单类别)
字符   \p{Sc} 货币符号
x 字符 x \P{InGreek} 所有字符,Greek 块中的除外(否定)
\\ 反斜线字符 [\p{L}&&[^\p{Lu}]]  所有字母,大写字母除外(减去)
\0n 带有八进制值 0 的字符 n (0 <= n <= 7)    
\0nn 带有八进制值 0 的字符 nn (0 <= n <= 7) 边界匹配器  
\0mnn 带有八进制值 0 的字符 mnn0 <= m <= 30 <= n <= 7 ^ 行的开头
\xhh 带有十六进制值 0x 的字符 hh $ 行的结尾
\uhhhh 带有十六进制值 0x 的字符 hhhh \b 单词边界
\t 制表符 ('\u0009') \B 非单词边界
\n 新行(换行)符 ('\u000A') \A 输入的开头
\r 回车符 ('\u000D') \G 上一个匹配的结尾
\f 换页符 ('\u000C') \Z 输入的结尾,仅用于最后的结束符(如果有的话)
\a 报警 (bell)  ('\u0007') \z 输入的结尾
\e 转义符 ('\u001B')    
\cx 对应于 x 的控制符 Greedy 数量词  
    X? X,一次或一次也没有
字符类   X* X,零次或多次
[abc] ab  c(简单类) X+ X,一次或多次
[^abc] 任何字符,除了 ab  c(否定) X{n} X,恰好 n 
[a-zA-Z] a  z  A  Z,两头的字母包括在内(范围) X{n,} X,至少 n 
[a-d[m-p]] a  d  m  p[a-dm-p](并集) X{n,m} X,至少 n 次,但是不超过 m 
[a-z&&[def]] de  f(交集)    
[a-z&&[^bc]] a  z,除了 b  c[ad-z](减去) Reluctant 数量词  
[a-z&&[^m-p]] a  z,而非 m  p[a-lq-z](减去) X?? X,一次或一次也没有
    X*? X,零次或多次
预定义字符类   X+? X,一次或多次
. 任何字符(与行结束符可能匹配也可能不匹配) X{n}? X,恰好 n 
\d 数字:[0-9] X{n,}? X,至少 n 
\D 非数字: [^0-9] X{n,m}? X,至少 n 次,但是不超过 m 
\s 空白字符:[ \t\n\x0B\f\r]    
\S 非空白字符:[^\s] Possessive 数量词  
\w 单词字符:[a-zA-Z_0-9] X?+ X,一次或一次也没有
\W 非单词字符:[^\w] X*+ X,零次或多次
    X++ X,一次或多次
POSIX 字符类(仅 US-ASCII   X{n}+ X,恰好 n 
\p{Lower} 小写字母字符:[a-z] X{n,}+ X,至少 n 
\p{Upper} 大写字母字符:[A-Z] X{n,m}+ X,至少 n 次,但是不超过 m 
\p{ASCII} 所有 ASCII[\x00-\x7F]    
\p{Alpha} 字母字符:[\p{Lower}\p{Upper}] Logical 运算符  
\p{Digit} 十进制数字:[0-9] XY X 后跟 Y
\p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}] X|Y X  Y
\p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_{|}~ (X) X,作为捕获组
\p{Graph} 可见字符:[\p{Alnum}\p{Punct}]    
\p{Print} 可打印字符:[\p{Graph}\x20] Back 引用  
\p{Blank} 空格或制表符:[ \t] \n 任何匹配的 nth 捕获组
\p{Cntrl} 控制字符:[\x00-\x1F\x7F]    
\p{XDigit} 十六进制数字:[0-9a-fA-F] 引用  
\p{Space} 空白字符:[ \t\n\x0B\f\r] \ Nothing,但是引用以下字符
    \Q Nothing,但是引用所有字符,直到 \E
java.lang.Character 类(简单的 java 字符类型)   \E Nothing,但是结束从 \Q 开始的引用
\p{javaLowerCase} 等效于 java.lang.Character.isLowerCase()    
\p{javaUpperCase} 等效于 java.lang.Character.isUpperCase() 特殊构造(非捕获)  
\p{javaWhitespace} 等效于 java.lang.Character.isWhitespace() (?:X) X,作为非捕获组
\p{javaMirrored} 等效于 java.lang.Character.isMirrored() (?idmsux-idmsux)  Nothing,但是将匹配标志由 on 转为 off
    (?idmsux-idmsux:X)   X,作为带有给定标志 on - off 的非捕获组
Unicode 块和类别的类   (?=X) X,通过零宽度的正 lookahead
(?<=X) X,通过零宽度的正 lookbehind (?!X) X,通过零宽度的负 lookahead
(?<!X) X,通过零宽度的负 lookbehind (?>X) X,作为独立的非捕获组

Matcher类提供了三个返回boolean值得匹配方法:
matches(),lookingAt(),find(),find(int start),
其中matches()用于全字符串匹配,lookingAt从字符串最开头开始匹配满足的子串,find可以对任意位置字符串匹配,其中start为起始查找索引值。

Matcher的常用方法有:
find():尝试查找与该模式匹配的输入序列的的下一个子序列。
find(int start):重置此匹配器,然后尝试查找匹配该模式、从指定索引开始的输入序列的下一个子序列。
group():匹配成功返回的组
start():返回先前匹配的起始位置的索引。
end():返回最后匹配字符的索引加一。
matches():尝试将整个区域与模式匹配。匹配成功返回true
lookingAt():尝试将从区域开头开始的输入序列与该模式匹配。
replaceFirst():替换掉匹配的第一个子序列
replaceAll():替换掉匹配的全部子序列
JAVA/210.html">http://www.itemperor.com/a/JAVA/210.html


原文链接:http://www.jxszl.com/biancheng/JAVA/446562.html