Java正则表达式语法(类Perl,但有些区别)
语法 | 解释 |
---|
字符 | |
c | 字符c |
\Unnnn,\Xnn,\0n,\0nn,\0nnn | 具有给定十六进制或十进制值的码元 |
\t,\n,\r,\f,\a,\e | 控制符: 制表符,换行符,回车符,换页符,警告符,符 |
\Cc | 与字符c相关的控制符 |
字符类 | |
---|
[C1C2…] | 任何由C1,C2,…表示的字符,其中C1可以是多个字符,字符范围(c1-c2)和字符类 |
[^…] | 字符类的补集 |
[…&&…] | 两个字符集的交集 |
预定义字符类 | |
---|
. | 除了行终止符之外的所有字符(在DOTALL标志被设置时,则表示所有字符) |
\d | 一个数字[0-9] |
\D | 一个非数字[^0-9] |
\s | 一个空白字符[\t\n\r\f\x0B] |
\S | 一个非空白字符 |
\w | 一个词语字符[a-zA-Z0-9_] |
\W | 一个非词语字符 |
\p{name} | 一个命名字符类—请查看 预定义的字符类表 |
\P{name} | 一个命名字符类的补集 |
边界匹配符 | |
---|
^ $ | 输入的开头和结尾(或者在多行模式下行的开头和结尾) |
\b | 一个词语的边界 |
\B | 一个非词语边界 |
\A | 输入的开头 |
\z | 输入的结尾 |
\Z | 除了行终止符之外的输入结尾 |
\G | 前一个匹配的结尾 |
量词 | |
---|
X? | 可选的X |
X* | X, 0或多次 |
X+ | X, 1或多次 |
X{n},X{n,}或X{n,m} | X n次,至少n次,在n到m次之间 |
量词后缀 | |
---|
? | 将默认(贪婪)匹配转变为勉强匹配 |
+ | 将默认(贪婪)匹配转变为占有匹配 |
集合操作 | |
---|
XY | 任何X中的字符串,后面跟随任何Y中的字符串 |
X|Y | 任何X或Y中的字符串 |
群组 | |
---|
(X) | 捕获将X作为群组匹配的字符串 |
\n | 第n个群组的匹配 |
预定义的字符类名字 | |
---|
字符类名字 | 解释 |
Lower | ASCII的小写字母[a-z] |
Upper | ASCII的大写字母[A-Z] |
Alpha | ASCII的字母[A-Za-z] |
Digit | ASCII的数字[0-9] |
Alnum | ASCII的字母或数字[A-Za-z0-9] |
XDigit | 十六进制数字[0-9A-Fa-f] |
Print或Graph | 可打印的ASCII字符[\x21-\x7E] |
Punct | ASCII的非字母和数字字符[\p{print}&&\P{Alnum}] |
ASCII | 所有ASCII字符[\x00-\x7F] |
Cntrl | ASCII的控制字符[\x00-\x1F] |
Blank | 空格字符或制表符[\t] |
Space | 空白字符[\t\n\r\f\0x0B] |
javaLowerCase | 小写字母,正如Character.isLowerCase()确定的字符 |
javaUpperCase | 大写字母,正如Character.isUpperCase()确定的字符 |
javaWhitespace | 空白字符,正如Character.isWhitespace()确定的字符 |
javaMirrored | 镜像字符,正如Character.isMirrored()确定的字符 |
InBlock | Block是Unicode字符块的名字,不过要剔除名字中的空格,例如BasicLatin和Mongonlian. 字符块名字列表请查看http://www.unicode.org |
Category或InCategory | Category是Unicode字符类别的名字,例如L(字母)和Sc(货币符号)字符类别的名字列表请查看http://www.unicode.org |
| |
三类括号:
[] 表示在里面集合中取一个字符
{} 用在其他后面做修饰,指示集合名字或数量
() 将一段数据作为群组捕获,常用于群组前后有特殊要求,而只需获取群组内容的情况下.
类说明
java.util.regex.Pattern
static Pattern compile(String expression)
static Pattern compile(String expression, int flags)
把正则表达式字符串编译到一个用于快速处理匹配的模式对象中.
参数: expression 正则表达式
flags CASE_INSENSITIVE
UNICODE_CASE
MULTILINE
UNIX_LINES
DOTALL
CANON_EQ
Matcher matcher(CharSequence input)
返回一个matcher对象,可以用它在输入中定位模式的匹配
String[] split(CharSequence input)
String[] split(CharSequence input, int limit)
将输入分割成标号,其中模式指定了分隔符的形式.返回标号数组,分隔符并非标号的一部分
参数: input 要分割成标号的字符串
limit 所产生的字符串的最大数量.如果已经发现了limit-1个匹配的分割符,那么
返回的数组中的最后一项就包含所有剩余未分割的输入.如果limit<=0,那么这个
输入都被分割;如果limit为0,那么队尾的空字符串将不会置于返回的数组中
java.util.regex.Matcher
boolean matches()
如果输入匹配模式,则返回true
boolean lookingAt()
如果输入的开头匹配模式,则返回true
boolean find()
boolean find(int start)
尝试查找下一个匹配,如果找到了另一个匹配,则返回true
参数: start 开始查找索引位置
int start()
int end()
返回当前匹配的开始索引和结尾之后的索引
String group()
返回当前的匹配
int groupCount()
返回输入模式中的群组数量
int start(int groupIndex)
int end(int groupIndex)
返回当前匹配中给定群组的开始和结尾之后的位置
参数: groupIndex 群组索引(从1开始), 或者表示整个匹配的0
String group(int groupIndex)
返回匹配给定群组的字符串
参数:groupIndex 群组索引(从1开始),或者表示整个匹配的0
String replaceAll(String replacement);
String replaceFirst(String replacement);
返回从匹配器输入获得的通过将所有匹配或第一个匹配用替换字符串替换之后的字符串.
参数:replacement 替换字符串,它可以包含用
n表示的对群组的引用,这时需要用$来表示包括一个
符号
Matcher reset()
Matcher reset(CharSequence input)
复位匹配器的状态.第二个方法将使匹配器作用于另一个不同的输入.这两个方法都返回this.