正則表達式袖珍手冊——java.util.regex

Java (java.util.regex)

作者:張桂權

(摘自《正則表達式袖珍手冊》一書。譯者,張桂權。可以從http://download.csdn.net/source/346896下載完整的譯稿。如果感覺不錯就去買一本原版的書吧,Regular Expression Pocket Reference,支持原書的作者。看PDF文件也是很累的。看完之後別忘了,給我提寶貴意見哦。謝謝。[email protected]

       Java1.4中通過Sunjava.util.regex包來介紹正則表達式。雖然在以前的版本中有可與之媲美的包,但是現在Sun的是標準。Sun提供的軟件包採用的是傳統的NFA匹配引擎。如果想進一步瞭解傳統的NFA引擎背後的規則,請看“正則表達式和模式匹配”一節。本章包括Java1.51.6中的正則表達式。

 

支持的元字符

      

       java.util.regex支持表11到表14中列出來的元字符和元序列。關於每一個元字符的詳述,請看“正則表達式元字符、模式和結構”一節。

      

Java字符表示

序列名

序列描述

/a

告警

/b

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

/e

Esc字符,/x1B

/n

換行,/x0A

/r

回車,/x0D

/f

分頁,/x0C

/t

水平製表符(tab)/x09

/0octal

通過123個八進制碼數指定的字符

/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

 

Unicodecanonical 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歸組、捕獲、條件和控制(續)

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章