正則表達式主要應用于文本的處理,如檢索,替換,檢查錯誤,文字拆分...實在是一言難盡,如果要全部寫出來,一本書都不差不多。還好oreilly已經為我們出了一本了。
講具體內容以前先給個完整的例子,這樣能有個感性的認識。
import java.util.regex.*;
public class Regex{
public
static void main(String[] args){
String text = "my email address is "
nicky.jcoder@gmail.com";
Pattern pattern = Pattern.compile("
\\w+@\\w+.\\w+");
Matcher matcher = pattern.matcher(text);
if(matcher.find()){
System.out.println(matcher.group());
}
}
}
把這段程序用jdk或jcreator或水膩的便了。反正運行起來就是了
輸出結果:xhinker@163.com
當你看完下面的東西回頭再看看這段程序就會發現,這不過是小菜一碟
字符和字符類
表格 A:
字符匹配
|
操作
|
解釋
|
例子
|
結果
|
.
|
單個字符匹配
|
.ord
|
匹配 “ford”, “lord”,
“2ord”,
|
[ ]
|
多個字符列表
|
[cng]
|
只會匹配 “cord”,
“nord”, 和 “gord”
|
[^ ]
|
不出現字符列表
|
[^cn]
|
匹配 “lord”, “2ord”,
等. 但不會匹配 “cord” or “nord”
|
|
|
[a-zA-Z]
|
匹配 “aord”, “bord”,
“Aord”, “Bord”等
|
|
|
[^0-9]
|
匹配 “Aord”, “aord”, 等.
但不會匹配“2ord”, 等.
|
表格 B:
重復操作符
|
操作
|
解釋
|
例子
|
結果
|
?
|
匹配0次或1次
|
“?erd”
|
匹配 “berd”,
“herd”“erd”等
|
*
|
匹配0次以上
|
“n*rd”
|
匹配 “nerd”, “nrd”,
“neard”, 等.
|
+
|
匹配1次以上
|
“[n]+erd”
|
匹配 “nerd”, “nnerd”,
等., 但不匹配 “erd”
|
{n}
|
匹配n次
|
“[a-z]{2}erd”
|
匹配“cherd”, “blerd”,
等. 但不匹配 “nerd”, “erd”, “buzzerd”,
等.
|
{n,}
|
匹配n次以上
|
“.{2,}erd”
|
匹配 “cherd” and “buzzerd”,
but not “nerd”
|
{n,N}
|
匹配n-N次
|
“n[e]{1,2}rd”
|
匹配 “nerd” and
“neerd”等
|
常用符號:
\d:[0-9]
\D:[^0-9]
\w:[a-zA-Z0-9]
\W:[^a-zA-Z0-9]
{?i):大小寫無關
\b和\B分別表示詞邊界和非詞邊界
當然上面這些只不過是最常用的,寫出幾個正則表達式是沒有問題了。接下來說說java。
在java里\有其自身的意義,所以在用\s,\d的時候要加上一個\也就是\\s
、
\\d \\(等
java自1.4后開始支持正則表達式,東西都放在java.util.regex包里,用Pattern生成一個模式對象,然后用matcher進行匹
配。如果要輸出匹配結果的話,一定要記得寫上matcher.find();否則會出錯。當然也可以用替換,這就要看你的喜好拉。想看更多的例子就去
jdk幫助文檔。
posted on 2006-12-04 13:16
wqwqwqwqwq 閱讀(428)
評論(0) 編輯 收藏 所屬分類:
Simple Java