top
Loading...
正則表達式和Java編程語言
應用程序常常需要有文本處理功能,比如單詞查找、電子郵件確認或XML文檔 集成。這通常會涉及到模式匹配。Perl、sed或awk等語言通過使用正則表達式來 改善模式匹配,正則表達式是一串字符,它所定義的模式可用來查找匹配的文本。 為了使用JavaTM編程語言進行模式匹配,需 要使用帶有許多charAt子字串的StringTokenizer 類,讀取字母或符號以便處理文本。這常常導致復雜或凌亂的代碼。

現在不一樣了。

2平臺標準版(J2SETM)1.4版包含一個名 為java.util.regex的新軟件包,使得使用正則表達式成為可能。 目前的功能包括元字符的使用,它賦予正則表達式極大的靈活性

本文概括地介紹了正則表達式的使用,并詳細解釋如何利用 java.util.regex軟件包來使用正則表達式,用以下常見情形作為 例子:

  • 簡單的單詞替換
  • 電子郵件確認
  • 從文件中刪除控制字符
  • 查找文件

為了編譯這些例子中的代碼和在應用程序中使用正則表達式,需要安裝 J2SE 1.4版。

構造正則表達式

正則表達式是一種字符模式,它描述的是一組字符串。你可以使用 java.util.regex軟件包,查找、顯示或修改輸入序列中出現的 某個模式的一部分或全部。

正則表達式最簡單的形式是一個精確的字符串,比如“Java”或 “programming”。正則表達式匹配還允許你檢查一個字符串是否符合某個具體的 句法形式,比如是不是一個電子郵件地址。

為了編寫正則表達式,普通字符和特殊字符都要使用:

 
$^.*
+?['']
.   

正則表達式中出現的任何其他字符都是普通字符,除非它前面有個

特殊字符有著特別的用處。例如,.可匹配除了換行符之外的任意字符。與 s.n這樣的正則表達式匹配的是任何三個字符的、以s 開始以n結束的字符串,包括sunson

在正則表達式中有許多特殊字符,可以查找一行開頭的單詞,忽略大小寫或 大小寫敏感的單詞,還有特殊字符可以給出一個范圍,比如a-e表 示從ae的任何字母。

使用這個新軟件包的正則表達式用法與Perl類似,所以如果你熟悉Perl中正則 表達式的使用,就可以在Java語言中使用同樣的表達式語法。如果你不熟悉正則 表達式,下面是一些入門的例子:

構造匹配于
字符 
x字符 x
\反斜線字符
n八進制值的字符0n (0 <= n <= 7)
nn八進制值的字符 0nn (0 <= n <= 7)
mnn八進制值的字符0mnn 0mnn (0 <= m <= 3, 0 <= n <= 7)
xhh十六進制值的字符0xhh
uhhhh十六進制值的字符0xhhhh
制表符('u0009')
換行符 ('u000A')
回車符 ('u000D')
f換頁符 ('u000C')
a響鈴符 ('u0007')
e轉義符 ('u001B')
cxT對應于x的控制字符 x
 
字符類
[abc]a, b, or c (簡單類)
[^abc]除了abc之外的任意 字符(求反)
[a-zA-Z]azAZ ,包含(范圍)
[a-z-[bc]]az,除了bc[ad-z](減去)
[a-z-[m-p]]az,除了mp[a-lq-z]
[a-z-[^def]]d, e, 或 f
預定義的字符類
.任意字符(也許能與行終止符匹配,也許不能)
d數字: [0-9]
D非數字: [^0-9]
s空格符: [ x0Bf]
S非空格符: [^s]
w單詞字符: [a-zA-Z_0-9]
W非單詞字符: [^w]

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗