正则表达式袖珍手册

在Java1.4中通过Sun的java.util.regex包来介绍正则表达式。虽然在以前的版本中有可与之媲美的包,但是现在Sun的是标准。Sun提供的软件包采用的是传统的NFA匹配引擎。如果想进一步了解传统的NFA引擎背后的规则,请看“正则表达式和模式匹配”一节。本章包括Java1.5和1.6中的正则表达式。

 

 

 

支持的元字符

 

 

       java.util.regex支持表11到表14中列出来的元字符和元序列。关于每一个元字符的详述,请看“正则表达式元字符、模式和结构”一节。

 

 

 

Java字符表示

 

序列名

 序列描述

 

/a

 告警

 

/b

 空格,/x08,只有在字符类中有效

 

/e

 Esc字符,/x1B

 

/n

 换行,/x0A

 

/r

 回车,/x0D

 

/f

 分页,/x0C

 

/t

 水平制表符(tab),/x09

 

/0octal

 通过1、2或3个八进制码数指定的字符

 

/xhex

 通过2个十六进制数指定的字符

 

/uhex

 通过4个十六进制数指定的Unicode字符

 

/cchar

 命名的控制字符

 

 

 

 

表11 Java字符表示

 

 

 

Java字符类和类似(class-like)结构

 

字符类

 类描述

 

[…]

 列出来的或包含在列表范围的单一字符

 

[^…]

 不在列出来的或不包含在列表范围的单一字符

 

.

 除行终止(除非是DOTALL模式)之外的任意字符

 

/w

 字字符,[a-zA-Z0-9_]

 

/W

 非字字符,[^a-zA-Z0-9_]

 

/d

 数字字符,[0-9]

 

/D

 非数字字符,[^0-9]

 

/s

 空格字符,[ /t/n/f/r/x0B]

 

/S

 非空格字符,[^ /t/n/f/r/x0B]

 

/p{prop}

 包含在给定POSIX字符类,Unicode属性和Unicode区位中的字符

 

/P{prop}

 不包含在给定POSIX字符类,Unicode属性和Unicode区位中的字符

 

 

 

 

表12  Java字符类和类似(class-like)结构

 

 

 

Java锚和其他0宽测试

 

序列名

 序列描述

 

^

 字符串的开头,或,在多行匹配模式(MULTILINE),任意换行之后的位置

 

/A

 在任意匹配模式,搜索字符串的开头

 

$

 字符串末尾,或在多行模式(MULTILINE),任意换行之前的位置

 

/Z

 在任意匹配模式下,字符串末尾或字符串末尾换行之前的位置

 

/z

 任意匹配模式下,字符串末尾

 

/b

 字边界

 

/B

 非字边界

 

/G

 当前搜索的开头

 

(?=…)

 正向前(Positive lookahead)

 

(?!…)

 负向前(Negative lookahead)

 

(?<=…)

 正向后(Positive lookbehind)

 

(?<!...)

 负向后(Negative lookbehind)

 

 

 

 

表13 Java锚和其他0宽测试

 

Java注释和模式转换器

 

转换器/序列

 模式字符

 转换器描述

 

Pattern.UNIX_LINES

 d

 把/n作为终止符

 

Pattern.DOTALL

 s

 点号匹配包括行终止符在内的任意字符

 

Pattern.MULTILINE

 m

 ^和$匹配下一个内嵌的行终止符

 

Pattern.COMMENTS

 x

 忽略空格,并允许以#开头的注释

 

Pattern.CASE_INSENSITIVE

 i

 大小写不敏感的ASCII码字符匹配

 

Pattern.UNICODE_CASE

 u

 大小写不敏感的UNICODE码字符匹配

 

Pattern.CANON_EQ

 

 Unicode“canonical equivalence””模式,其中基础字符中的字符,或序列和可视化表示的联合字符视为相等

 

(?mode)

 为其余子表达式启动所列的模式(一个或多个idmsux)

 

(?-mode)

 为其余子表达式取消所列的模式(一个或多个idmsux)

 

(?mode:...)

 启动括号内所列的模式(一个或多个idmsux)

 

(?-mode:...)

 取消括号内所列的模式(一个或多个idmsux)

 

#...

 在/x模式中,把行内剩余部分当作注释

 

 

 

 

表14 Java注释和模式转换器

 

 

 

Java归组、捕获、条件和控制

 

序列

 序列描述

 

(...)

 把子模式和捕获子匹配归到/1,/2,...和$1,$2,...

 

/n

 包含第n个被捕获的文本

 

$n

 在替换字符串中,包含第n个捕获组中匹配的文本

 

(?:...)

 把子模式分组,但是不捕获子匹配

 

(?>...)

 自动分组

 

...|...

 尝试子模式替换

 

*

 匹配0或多次

 

+

 匹配1次或多次

 

 匹配1次或0次

 

{n}

 匹配精确的n次

 

{n,}

 至少匹配n次

 

{x,y}

 至少匹配x次,最多y次

 

*?

 匹配0次或多次,但是尽可能少

 

+?

 匹配1次或多次,但是尽可能少

 

??

 匹配0次或多次,但是尽可能少

 

 

 

 

表15 Java归组、捕获、条件和控制

 

 

 

Java归组、捕获、条件和控制(续)

 

序列

 序列描述

 

{n,}?

 至少匹配n次,但是尽可能少

 

{x,y}?

 至少匹配x次,最多y次,但是尽可能少

 

*+

 匹配0此或多次,并且从不回溯

 

++

 匹配1此或多次,并且从不回溯

 

?+

 匹配0此或1次,并且从不回溯

 

{n}+

 至少匹配n次,并且从不回溯

 

{n,}+

 至少匹配n次,并且从不回溯

 

{x,y}+

 至少匹配x次,最多匹配y次,并且从不回溯

 

 

 

 

表15 Java归组、捕获、条件和控制(续)

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Natureboy520/archive/2008/01/29/2072049.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值