最近幾天,手頭上的任務比較多,到今天才有足夠時間,心情來抒寫這份凝重的心情。。。。
4月30號(周三晚上)在同事旁邊找了一間單間的,交了壓金,決定5月24號(周六)搬進去
5月23號晚上去買了些生活用品,回到宿舍整理完快11點了,夜深了,一個人在宿舍,在這樣的環境,
想著曾經往事,一起走過的風風雨雨,酸甜的味道,此時一起全部涌現在腦海里,讓我克制不住我的情緒,我的眼淚。。。
或許曉明說的是沒錯,這事是遲早要做的,只是提早了。是的,但是此時的心情是難受,
真的很難受。想著要離開曾一起住了1361天(2004.09.01-2008.05.24)的宿舍,那更是難受!
210.34.5.86 yd2008 yd2008
第一句
如果我們之間有1000步的距離
你只要跨出第1步
我就會朝你的方向走其余的999步
第二句
通常愿意留下來跟你爭吵的人
才是真正愛你的人
第三句
付出真心 才會得到真心
卻也可能傷得徹底
保持距離 就能保護自己
卻也注定永遠寂寞
第四句
有時候 不是對方不在乎你
而是你把對方看得太重
第五句
朋友就是把你看透了 還能喜歡你的人
第六句
就算是believe 中間也藏了一個lie
第七句
真正的好朋友
并不是在一起就有聊不完的話題
而是在一起 就算不說話
也不會感到尷尬
第八句
沒有一百分的另一半
只有五十分的兩個人
第九句
為你的難過而快樂的 是敵人
為你的快樂而快樂的 是朋友
為你的難過而難過的
就是那些 該放進心里的人
第十句
冷漠 有時候并不是無情
只是一種避免被傷害的工具
昨天5.12號迎來了2008Olympic火炬在廈門傳遞,公司放假了14:30-16:30
跟同事一起走到曾厝垵那邊,在珍珠灣這邊人太多了!
沒有多少激動,只有在火炬手從身邊跑過那一會,有點激動,呵呵!
來兩張圖片吧
停下腳步,發現最近走得太快了,應該放慢腳步,好好考慮考慮,好好休息會!
(想到昨晚的事,還是有那么點傷心,那么點失望,雖然那只是他一時的疏忽?。?
光陰似箭,五一又到了,去年的這個時候正跟MM積極準備著去武夷山玩呢
去年的這幾天晚上也是沒怎么睡好,那時是因為激動呀,那是第一次去武夷山玩哦
而這幾天也仍然睡不好,有點害怕,有點緊張,現在想想感覺有點太快了,真的有點怕怕
雖然知道緊張,害怕是沒有用的,但每天晚上睡覺時還是會時時胡思亂想
希望一切都好!
祝所有朋友:五一快樂,心想事成!
(5月6號:五一回來了,一切都挺的好,緊張中享受幸福!
老爸對他的第一印象不錯!老姐說他人挺老實的,也不錯!
他家人也都挺好相處的,特別是他老爸挺疼俺的,接過他老爸親手炸的地瓜餅那瞬間,
我真的感動萬分!那一刻我從心底再次認定他了!
可能是因為跟他老媽語言勾通不方便,他老媽知道我不會說他那邊的話,她又不會講普通話,
顯得拘束了很多,呵呵?。?
經典語錄TOP50
TOP1
人生的最大遺憾莫過于錯誤地堅持了不該堅持的,輕易地放棄了不該放棄的……
TOP2
新式morning call——生前何必久睡,死后自會長眠
TOP3
使你疲勞的不是遠方的高山,而且是你鞋里面的一粒砂子
TOP4
有時在飯堂排隊打飯時最大的欣慰不是前面的人越來越少而是后面等的人越來越多
TOP5
逆風的方向,更適合飛翔。我不怕萬人阻擋,只怕自己投降
TOP6
酒,裝在瓶里像水,喝到肚里鬧鬼,說起話來走嘴,走起路來閃腿,半夜起來找水,早上起來后悔,中午酒杯一端還是挺美。
TOP7
你要不理我我就成包子了…而且還是天津最有名的…嘿嘿…
TOP8
媽媽說人最好不要錯過兩樣東西,最后一班回家的車和一個深愛你的人
TOP9
我問一個在深圳工作了二十年的朋友:“如果你死后,你的墓志銘打算寫點啥?”他說:“我解決了住房問題!”
TOP10
那天看到一位大媽在燒紙,邊燒邊嘟囔著:收到了全都買基金吧~~
TOP11
學問之美,在于使人一頭霧水;詩歌之美,在于煽動男女出軌;女人之美,在于蠢得無怨無悔;男人之美,在于說謊說得白日見鬼
TOP12
如果你看到面前的陰影,別怕,那是因為你的背后有陽光
TOP13
諸葛亮出山前,也沒帶過兵!憑啥我就要工作經驗?
TOP14
本人made in china,出廠日期1981年X月X日,長180cm,凈重67kg。采用人工智能,各部分零件齊全,運轉穩定,經二十多年的運行,屬信得過產品。該產品手續齊全,無限期包退包換。現因發展需要,誠招志同道合者共同研制開發第二代產品,有意者請聯系!
TOP15
干掉熊貓,我就是國寶!
TOP16
我能容忍身材是假的,臉是假的,胸是假的,臀是假的?。。〉褪遣蝗萑体X是假的?。。?!
TOP17
脫機的人永遠不知道聯機的人等了她多久……
TOP18
緊 急 通 知:請準備一寸彩照,身份證復印件,學歷復印件,個人簡歷,送到國家航天局,據可靠消息,為慶祝中秋,要招聘嫦娥!(自帶兔子)
TOP19
命運負責洗牌,但是玩牌的是我們自己!
TOP20
問世間情為何物,不過一物降一物~
TOP21
如果中了一千萬,我就去買30套房子租給別人,每天都去收一次房租。哇咔咔~~充實!
TOP22
上帝欲使人滅亡,必先使其瘋狂;上帝欲使 人瘋狂,必先使其買房
TOP23
我們走得太快,靈魂都跟不上了……
TOP24
問:你喜歡我哪一點?答:我喜歡你離我遠一點!
TOP25
你看得見我打在屏幕上的字,卻看不到我掉在鍵盤上的淚
TOP26
大師兄,你知道嗎?二師兄的肉現在比師傅的都貴了
TOP27
很久很久以前,謊言和真實在河邊洗澡,謊言先洗好,穿了真實的衣服離開, 真實卻不肯穿謊言的衣服。后來,在人們的眼里,只有穿著真實衣服的謊言,卻很難接受赤裸裸的真實
TOP28
忙碌是一種幸福,讓我們沒時間體會痛苦,奔波是一種快樂,讓我們真實的感受生活,疲憊是一種享受,讓我們無暇空虛,愿你的生活多姿多彩,永遠開心!
TOP29
在非洲,瞪羚每天早上醒來時,他知道自己必須跑的比最快的獅子還快,否則就會被吃掉.獅子每天早上醒來時,他知道自己必須追上跑得最慢的瞪羚,否則就會被餓死.不管你是獅子還是瞪羚,當太陽升起時,你最好開始奔跑
TOP30
任盈盈教令狐沖彈琴,后來她愛上了令狐沖;岳靈珊教林平之武功,后來她愛上了林平之;小龍女教楊過武功,后來她愛上了楊過;老頑童教瑛姑武功,后來他愛上了瑛姑;但是,怎么沒有一個教我課的女老師或是女助教愛上我呢?
TOP31
聽說女人如衣服,兄弟如手足,回想起來,我竟然七手八腳地裸奔了19年!
TOP32
騎白馬的不一定是王子,他可能是唐僧;帶翅膀的也不一定是天使——媽媽說,那是鳥人
TOP33
愛一個人就是在拔通電話時,忽然不知道說什么好,原來只是想聽聽那熟悉的聲音,原來真正想拔動的只是自已心底深處的一根弦
TOP34
老虎不發威,你當我是hello kitty啊!小驢不發威,你以為我是史努比啊!
TOP35
懷才就像懷孕,時間長了才能看出來
TOP36
來瓶82年的礦泉水
TOP37
過錯是暫時的遺憾,而錯過則是永遠的遺憾!
TOP38
小時候我以為自己長大后可以拯救整個世界,等長大后才發現整個世界都拯救不了我.......
TOP39
跌倒了,爬起來再哭~~~
TOP40
上聯:憶往昔,紅米飯,南瓜湯,老婆一個,小孩一幫.下聯:看今朝,白米飯,王八湯,小孩一個,老婆 一幫
TOP41
這世上最累的事情,莫過于眼睜睜看著自己的心碎了,還得自己動手把它粘起來
TOP42
事業是國家的,榮譽是單位的,成績是領導的,工資是老婆的,財產是孩子的,錯誤是自己的
TOP43
學士上面是碩士,碩士之后是博士,博士后面還有博士后,那博士后后面呢?如果你夠勇敢再讀兩年那就是勇士,再讀5年是壯士,再讀7年是烈士,烈士以后呢?教育部會推出圣斗士,讀滿2年是青銅的 5年是白銀的 7年是黃金的。畢業后愿意再讀上去的女孩,有機會考出雅典娜!??!
TOP44
好的愛情是你透過一個男人看到世界,壞的愛情是你為了一個人舍棄世界
TOP45
今天你醒來,枕邊躺著一只蚊子,旁邊有一封遺囑:我奮斗了一晚,你的臉皮厚的讓我無顏活在這個世上。主啊!寬恕他吧,我是自殺的!
TOP46
上班無聊嗎?拋硬幣玩吧,正面就上網,反面就睡覺,豎起就工作,傾斜就努力工作,摔粉碎了就申請加班,如果摔出兩枚,那就天天摔!
TOP47
同志們:別炒股,風險太大了,還是做豆腐最安全!做硬了是豆腐干,做稀了是豆腐腦,做薄了是豆腐皮,做沒了是豆漿,放臭了是臭豆腐!穩賺不虧呀
TOP48
我終究沒能飆得過那輛寶馬,只能眼看著它在夕陽中絕塵而去,不是我的引擎不好,而是我的車鏈子掉了
TOP49
通知:近來秋寒已至,請同志們做好防御工作,有老公的抱老公 ,有老婆的抱老婆,暫時沒有的請抱暖水瓶,實在沒有暖水瓶的,請抱煤氣罐(注意要點燃)。請勿亂抱雞鴨等動物,以防禽流感。該南飛的南飛,該換毛的換毛,實在不行的就冬眠
TOP50
還能沖動,表示你還對生活有激情,總是沖動,表示你還不懂生活
安裝配置指南
------------
一、下載SourceOffsite V3.53
官方下載地址,可以試用30天,試用期間無任何功能限制。
http://www.sourcegear.com/sos/downloads/SOS_Classic_3_5_3.zip
現在國內也有相關的中文版下載,本人使用沒有什么區別,可能就是多一個VSS6.0。如果大家連VSS6.0都沒有,就建議下載中文版。
二、安裝SourceOffsite 服務器端
程序安裝路徑:
"下載保存路徑\\SOS_Classic_3_5_3.zip\\vss6\\sos_server_winnt_professional_vss6.exe"。
安裝過程結束后要提示重新啟動系統,選擇取消,不用重新啟動也行,因為有的文章介紹說可以不重新啟動。如果大家慎重一點,可以選擇重新啟動,本人就選擇了重新啟動。
三、配置SourceOffsite 服務器端
啟動SourceOffsite 服務器端程序,程序路徑為:"C:\\Program Files\\SourceOffSite\\ServerMgr.exe",也可以在Windows開始程序菜單中啟動。其實 SourceOffsite 的用戶指南里面有詳細的軟件使用及配置說明,在這里只能介紹幾個重要的配置信息,其他設置使用默認值就可以。
1、網絡端口設置(port)
打開程序的"General Settings"頁面即可看到。
這里的端口只要不和其他網絡端口沖突就行,一般默認值就不要修改了。
本人測試的端口號為:
unsecure port :8888,不用加密訪問的端口。
secure port :8890,加密時訪問的端口。
2、VSS數據庫的設置(databases )
打開程序的"databases"頁面,選擇"Add...",出現添加數據庫的對話框,選擇已經存在的數據庫srcsafe.ini,在DataBase 框中就會有數據庫的完整路徑,在DataBase Alias(數據庫別名)中輸入數據庫名稱也可以,為了測試方便本人輸入了"net_vss"。
這里只要把要共享的數據庫都選擇出來就行,真正的配置管理員可能會有很多VSS數據庫。
3、用戶訪問規則設置(users)
下面的規則設置方法,是網上搜索得到的很有效,在自帶的用戶指南中沒有介紹。
舉例的缺省規則:
0000 admin 192.168.3.0/24 1 來自 192.168.3.* 的 admin 必須加密訪問
0001 admin 0.0.0.0/0 0 其它網段的 admin 用戶拒絕訪問
0002 * 192.168.3.0/24 2 其它來自 192.168.3.* 的用戶可以訪問
0003 * 0.0.0.0/0 1 其它網段的其它用戶必須加密訪問
每條規則有 4 個字段,第一個字段為規則優先級,按照 0000 0001 0002 ... 9999 排列
第二個字段為 用戶名 匹配,如果為 * 表示全匹配。
第三個字段為 IP/子網 匹配。
192.168.3.1 表示匹配單機 192.168.3.1。
192.168.3.0/24 表示匹配 192.168.3.*
166.111.0.0/16 表示匹配清華校園網。
0.0.0.0/0 表示匹配所有的IP。
第四個字段為 控制項,可選為
0 表示拒絕訪問
1 表示要求加密訪問
2 表示可以訪問
打開程序的"Users"頁面,本人的測試規則為"0000 * 0.0.0.0/0 2"允許所有的用戶不加密訪問,把測試規則輸入到"SourceSafe user name"框中即可。
大家設置時請按需要修改規則。
四、啟動SourceOffsite 服務
打開Windows的系統服務找到SourceOffsite 啟動服務即可。大家要注意以后修改任何的服務器端配置后都要重新啟動SourceOffsite 服務才能生效。
五、安裝SourceOffsite 客戶端
為了后面好配置,測試功能,本人就在服務器端機器上安裝客戶端了,大家也可以這樣先測試一下。
程序安裝路徑:
"下載保存路徑\\SOS_Classic_3_5_3.zip\\Windows\\sos_client_professional.exe"。
安裝過程中沒的任何困難的地方,這里就不做過多介紹了。
六、使用SourceOffsite 客戶端
使用步驟以本人的測試步驟為例:
1、連接服務器對話框,輸入服務器地址"Server":127.0.0.1,端口號"Prot":8888,選擇連接"Connect"。
2、VSS數據庫登錄對話框,輸入VSS用戶名"Username":t1,用戶密碼"Password":t1,VSS數據庫別名"Database":net_vss。
3、驗證正確后,就可以看到VSS數據庫的內容了,關于VSS的操作就不做介紹了。
到此就成功地實現了VSS(Visual SourceSafe)的Internet訪問。
Java視圖上,左邊“包資源管理器”,在要恢復的項目上點右鍵,會有一個菜單項,“從本地歷史紀錄復原(X)...”,英文是”Restore from Local History...”,點這個,就會彈出一個對話框,原來他們藏在這里了!對應于每一個刪除的文件右邊有相應的保存的日期,有更改就有保存,點對應的時間可以在下方看到代碼,選中想要回復的文件,點恢復,就可以看到它乖乖的回到了原來的地方!
值得說明的是,Eclipse保存這些刪掉的文件是有時間期限的,應該也有空間的限制。有些文件雖然可以看到文件名和更改時間,但是內容已經不存在了!這時會提示你狀態無效或已經過期
正則表達式用來指定字符串模式。當你需要定位匹配某種模式的字符串時就可以使用正則表達式。例如,我們下面的一個例程就是在一個HTML文件中通過查找字符串模式<a href="...">來定位所有的超鏈接。
當然,為了指定一種模式,使用...這種記號是不夠精確的。你需要精確地指定什么樣的字符排列是一個合法的匹配。當描述某種模式時,你需要使用一種特殊的語法。
這里有一個簡單例子。正則表達式
[Jj]ava.+
匹配下列形式的任何字符串:
例如,字符串“javaness”匹配這個特殊的正則表達式,但是字符串“Core Java”卻不匹配。
如你所見,你需要了解一點語法來理解正則表達式的含意。幸運的是對于大多數的用途,使用少量的簡單構造(straightforward constructs)就已足夠。
- 字符類是可選自符的集合,用‘[’封裝,比如[Jj],[0-9],[A-Za-z]或[^0-9]。這里的-表示范圍(Unicode落在兩個邊界之間的所有字符),^表示求補(指定字符外的所有字符)。
- 有許多預定以的字符類,像\d(數字)或\p{Sc}(Unicode貨幣符號),見表12-8和12-9。
- 符號.匹配任何字符(可能行終止符(line terminators)除外,這依賴于標識設置(flag settings))
- \用作轉義符,比如\.匹配一個句點,\\匹配一個反斜杠。
- 如果X和Y都是正則表達式,則XY表示“X的匹配后面跟著Y的匹配”。X|Y表示“任何X或Y的匹配”
- 可以將量詞(quantifier)用到表達式中,X+ 表示X重復1次或多次,X* 表示X重復0次或多次,X? 表示X重復0次或1次
- 默認地,一個量詞總是與使總體成功匹配的最長的可能重復匹配??梢约由虾缶Y?(稱為reluctant或stingy 匹配,用以匹配最小的重復數),和+(稱為possessive或貪婪匹配,用以即使在總體匹配失敗的情況下也匹配最大的重復數)來更改這種屬性。
例如,字符串cab匹配[a-z]*ab,但不匹配[a-z]*+ab。第一種情況下,[a-z]*只匹配字符c,因此字符ab正好與模式的剩余部分匹配。但是貪婪版本[a-z]*+就與字符cab匹配,模式的剩余部分ab就匹配失?。?,這樣總體也就匹配失敗)。
- 可以使用分組來定義子表達式。將分組封裝在()中,如([+-]?)([0-9]+)。然后你可以讓模式匹配符(the pattern matcher)返回每個分組的匹配,或者使用\n來回引分組(refer back to a group with \n),其中n是組號(以\1起始)
這里有一個稍微有點復雜卻又很有用的正則表達式--它用來描述十進制和十六進制的整數。
[+-]?[0-9]+|0[Xx][0-9A-Fa-f]+
不幸的是,在使用正則表達式的各種程序和庫之間,它的語法還沒有完全標準化。對基本的構造上已達成了共識,但在細節方面有許多令人“抓狂”的區別(many maddening differences)。Java的正則表達式類使用了與Perl語言類似的語法,但也不盡相同。表12-8顯示了Java語法的所有正則表達式構造。要了解更多關于正則表達式的信息,請參考Pattern類的API文檔,或者Jeffrey E. F. Friedl的著作《Mastering Regular Expressions》(O'Reilly and Associates, 1997)(剛去第二書店查了一下,東南大學出版社已經引入了其第二版,影?。?br />
表12-8 正則表達式語法
語法 解釋
字符
c 字符c
\unnnn, \xnn, \0n, \0nn, \0nnn 帶有十六或八進制值的代碼單元
\0n 八進制0n代表的字符(0<=n<=7)
\0nn 八進制0nn代表的字符(0<=n<=7)
\0mnn 八進制0mnn代表的字符(0<=m<=3,0<=n<=7)
\xnn 十六進制 0xnn所代表的字符
\uhhhh 十六進制 0xhhhh所代表的字符
\t, \n, \r, \f, \a, \e 控制字符,依次是制表符,換行符,回車符,換頁符,報警符和轉義符
\cc 控制字符中出現的相應字符c
字符類
[C1C2. . .] C1、C2……中的任何字符。Ci可以是字符,字符范圍(C1-C2)或者字符類。
[^. . .] 字符類的補集
[ . . . && . . .] 兩個字符類的交集
預定義字符類
. 除行終止符外的任何字符(如果DOTALL標志置位,則表示任何字符)
\d 數字[0-9]
\D 非數字[^0-9]
\s 空白字符[\t\n\r\f\x0B]
\S 非空白字符
\w 單詞字符[a-zA-Z0-9_]
\W 非單詞字符
\p{name} 一個指定的字符類,見表12-9
\P{name} 指定字符類的補集
邊界匹配符
^ $ 輸入的開頭和結尾(在多行模式(multiline mode)下是行的開頭和結尾)
\b 單詞邊界
\B 非單詞邊界
\A 輸入的開頭
\z 輸入的結尾
\Z 除最后行終止符之外的輸入結尾
\G 上個匹配的結尾
量詞
X? 可選的X(即X可能出現,也可能不出現)
X* X,可以重復0次或多次
X+ X,可以重復1次或多次
X{n} X{n,} X{n,m} X重復n次,至少重復n次,重復n到m次
量詞后綴
? 設默認(貪婪)匹配為reluctant匹配
+ 設默認(貪婪)匹配為possessive匹配
集合操作
XY X的匹配后面跟著Y的匹配
X|Y X或Y的匹配
分組
(X) 匹配X并且在一個自動計數的分組中捕獲它
\n 與第n個分組的匹配
轉義
\c 字符c(必須不是字母)
\Q...\E 逐字地引用...
(?...) 特殊構造,看Pattern類的API
正則表達式的最簡單使用是測試一個特殊的字符串是否與之匹配。這里有一個Java寫的測試程序。首先從表示正則表達式的字符串構造一個Pattern對象。然后從該模式獲得一個Matcher對象,并且調用它的matches()方法:
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(input);
if (matcher.matches()) . . .
表12.9 預定義的字符類名(Predefined Character Class Names)
Lower 小寫的ASII字符[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 or 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()的Mirrored(?)
InBlock 這里的Block是unicode字符的塊名,用空格隔開,比如BasicLatin 或 Mongolian。塊名列表 參考http://www.unicode.org
Category 或InCategory 這里的Category是Unicode字符的種類名,比如L(字母)或者Sc(貨幣符號)。種類 名列表參考http://www.unicode.org
matcher的輸入可以是實現CharSequence接口的任何類對象,像String,StringBuilder或CharBuffer。
當編譯模式時,可以設置一個或多個標志,例如
Pattern pattern = Pattern.compile(patternString,
Pattern.CASE_INSENSITIVE + Pattern.UNICODE_CASE);
下面六個標志都是支持的:
CASE_INSENSITIVE:匹配字符時與大小寫無關,該標志默認只考慮US ASCII字符。
UNICODE_CASE:當與CASE_INSENSITIVE結合時,使用Unicode字母匹配
MULTILINE:^和$匹配一行的開始和結尾,而不是整個輸入
UNIX_LINES: 當在多行模式下匹配^和$時,只將'\n'看作行終止符
DOTALL: 當使用此標志時,.符號匹配包括行終止符在內的所有字符
CANON_EQ: 考慮Unicode字符的規范等價
如果正則表達式包含分組,Matcher對象能夠揭示分組邊界。方法
int start(int groupIndex)
int end(int groupIndex)
返回某個特殊分組的起始索引和結尾后索引(past-the-end index )。
通過調用String group(int groupIndex),你可以簡單地得到匹配的字符串。
第0個分組代表所有的分組,第一個實際分組的索引是1。調用groupCount來獲得總的分組數。
使用開放圓括號來安排嵌套分組。例如,給定模式((1?[0-9]):([0-5][0-9]))[ap]m,并且輸入11:59am,Matcher對象報告下列分組
((1?[0-9]):([0-5][0-9]))[ap]m
并輸入
11:59am
matcher報告下列分組
分組索引 起始 結束 字符串
0 0 7 11;59am
1 0 5 11:59
2 0 2 11
3 3 5 59
例12-9提示輸入一個模式和一個欲匹配的字符串。它將輸出輸入的字符串是否匹配模式。如果輸入匹配包含分組的模式,程序將會使用圓括號來打印分組邊界,如((11):(59))am
Example 12-9. RegexTest.java
import java.util.*;
import java.util.regex.*;
/**
This program tests regular expression matching.
Enter a pattern and strings to match, or hit Cancel
to exit. If the pattern contains groups, the group
boundaries are displayed in the match.
*/
public class RegExTest
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("Enter pattern: ");
String patternString = in.nextLine();
Pattern pattern = null;
try
{
pattern = Pattern.compile(patternString);
}
catch (PatternSyntaxException e)
{
System.out.println("Pattern syntax error");
System.exit(1);
}
while (true)
{
System.out.println("Enter string to match: ");
String input = in.nextLine();
if (input == null || input.equals("")) return;
Matcher matcher = pattern.matcher(input);
if (matcher.matches())
{
System.out.println("Match");
int g = matcher.groupCount();
if (g > 0)
{
for (int i = 0; i < input.length(); i++)
{
for (int j = 1; j <= g; j++)
if (i == matcher.start(j))
System.out.print('(');
System.out.print(input.charAt(i));
for (int j = 1; j <= g; j++)
if (i + 1 == matcher.end(j))
System.out.print(')');
}
System.out.println();
}
}
else
System.out.println("No match");
}
}
}
通常地,你不希望匹配整個輸入到某個正則表達式,而是希望在輸入中找出一個或多個匹配的子字符串。使用Matcher類的find方法來尋找下一個匹配。如果它返回True,再使用start和end方法找出匹配的范圍。
while (matcher.find())
{
int start = matcher.start();
int end = matcher.end();
String match = input.substring(start, end);
. . .
}
例12-10用到了這種機制。它在一個網頁中定位所有的超文本引用并打印它們。為運行程序,在命令行提供一個URL,比如
java HrefMatch http://www.horstmann.com
Example 12-10. HrefMatch.java
1. import java.io.*;
2. import java.net.*;
3. import java.util.regex.*;
4.
5. /**
6. This program displays all URLs in a web page by
7. matching a regular expression that describes the
8. <a href=...> HTML tag. Start the program as
9. java HrefMatch URL
10. */
11. public class HrefMatch
12. {
13. public static void main(String[] args)
14. {
15. try
16. {
17. // get URL string from command line or use default
18. String urlString;
19. if (args.length > 0) urlString = args[0];
20. else urlString = "http://java.sun.com";
21.
22. // open reader for URL
23. InputStreamReader in = new InputStreamReader(new URL(urlString).openStream());
24.
25. // read contents into string buffer
26. StringBuilder input = new StringBuilder();
27. int ch;
28. while ((ch = in.read()) != -1) input.append((char) ch);
29.
30. // search for all occurrences of pattern
31. String patternString = "<a\\s+href\\s*=\\s*(\"[^\"]*\"|[^\\s>])\\s*>";
32. Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE);
33. Matcher matcher = pattern.matcher(input);
34.
35. while (matcher.find())
36. {
37. int start = matcher.start();
38. int end = matcher.end();
39. String match = input.substring(start, end);
40. System.out.println(match);
41. }
42. }
43. catch (IOException e)
44. {
45. e.printStackTrace();
46. }
47. catch (PatternSyntaxException e)
48. {
49. e.printStackTrace();
50. }
51. }
52. }
Matcher類的replaceAll方法用一個替換字符串代替出現的所有正則表達式的匹配。比如,下列指令用#替換所有數字序列
Pattern pattern = Pattern.compile("[0-9]+");
Matcher matcher = pattern.matcher(input);
String output = matcher.replaceAll("#");
替換字符串可以包含模式中的分組引用:$n被第n個分組替換。替換文本中出現$時,使用\$來包含它。
replaceFirst方法只替換模式的第一次出現。
最后講一點,Pattern類有一個split方法,它類似于字符串tokenizer。它使用正則表達式匹配作邊界,將輸入分離成字符串數組。比如,下面的指令將輸入分離成記號(token),
Pattern pattern = Pattern.compile("\\s*\\p{Punct}\\s*");
String[] tokens = pattern.split(input);
類
java.util.regex.Pattern 1.4
方法
static Pattern compile(String expression)
static Pattern compile(String expression, int flags)
編譯正則表達式字符串到pattern對象用以匹配的快速處理
參數:
expression 正則表達式
flags 下列標志中的一個或多個 CASE_INSENSITIVE, UNICODE_CASE, MULTILINE, UNIX_LINES, DOTALL, and CANON_EQ
Matcher matcher(CharSequence input)
返回一個matcher對象,它可以用來在一個輸入中定位模式匹配
String[] split(CharSequence input)
String[] split(CharSequence input, int limit)
將輸入字符串分離成記號,并由pattern來指定分隔符的形式。返回記號數組。分隔符并不是記號的一部分。
參數:
input 分離成記號的字符串
limit 生成的最大字符串數。
類
java.util.regex.Matcher 1.4
方法
boolean matches()
返回輸入是否與模式匹配
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)
返回從matcher輸入得到的字符串,但已經用替換表達式替換所有或第一個匹配
參數:
replacement 替換字符串
Matcher reset()
Matcher reset(CharSequence input)
復位mather狀態。
有太多的話要說。。。。。。。。。
。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。
好好想想吧!
光陰似箭,07年掃墓情景還晰晰在目,今年清明有放假,又過完了一個清明節
4.4坐了最早一班車7:50分那班,(建都也剛好要回家,一起回去的)
三哥他們比我早到了10多分鐘,在殯儀館路口那等我了
一切好像都習慣了,沒有那么悲傷,那么心痛。。。。。
只是頭腦一片空白。。。。。
(這已經是第三次去老媽那掃墓了,但總覺得這不是事實?。?br />
拜拜完后給炎煌掛了電話,(那會是從廈門來老家,所以沒有給他帶曾經答應他要帶給他吃的,
下次我會特意給你帶點哦,呵)聊了會有關墓地的事
下午三哥,萍,培,我四個人還去了奶奶那掃墓了,一開始我跟三哥兩個相當用功的把墓地旁邊的雜草鋤了,
(因為太久沒干活了,我的手皮一會就起泡了,沒注意到,再過會,還沒清除完,我手上的泡破了)
后部分那兩個小家伙也幫了不少忙
等墓地看上去還不錯,我們收工回家了
回家后去了叔叔那了,最近叔叔身體還不錯,他說腳還是有點難受,可能是因為他不愛活動吧
經常在家坐著,叔叔比較不愛動
在叔叔家坐了20分鐘左右,我回家了,回到家,趕緊打掃衛生
有點辛苦,但這一切我都習慣了
打掃完后準備晚餐了,在做飯時,銀煜打電話說去他家吃飯,想想好像我都被去過他家呢,也就決定去他家
磳飯吃,呵呵
那晚他家里很多人,還見到清點他大哥,能輝他媽媽了,呵呵
第二天我們準備去爺爺那掃墓,爺爺的墓地相當遠,不過,這次發現遠倒是還可以,沒之前想象的那么遠,
就是有一段路相當的陡!還是老爸最厲害,他走在最前面,哈哈!
上坡容易下坡難,在回來時,走完那段高坡,我的腳在發軟,發抖,呵呵
這次回家很多人都說我胖了,說最近吃得不錯,連三哥都偷偷在問老爸,
那應該都是豬頭的功勞,每次都讓我多吃點,呵呵
昨天,跟萍搭12:30那班車回來廈門,居然全程走高速,3點就到車站了
豬頭去車站接我們了,哈哈!
我們到上島coffee休息了會,送萍到火車站去坐直達車回學校后,我跟豬頭去他宿舍了
昨晚在豬頭那吃完飯才回宿舍的
最近工作較忙,03.21第二次福州辦身份證回來今天才在這發牢騷
這次是蓮陪我一起去的,一路上,三個多小時,我們一直聊著,談著最近所有開心和不開心的事;
我們還計劃了暑期去九寨溝旅游呢
到了福州北站時還沒11點,老天好像故意給我們安排了個特別的招待,下車時雨下得相當的大!
雨中的浪漫!更讓我們回憶起以前在大學時,一起走過的日子!
下車打的,拿戶口本,去派處所照相(別想歪了哦)
一切都很恰好,都很緊奏
辦完了,終于全部都搞定了,松了口氣了,深怕上次的惡作劇再次上演,呵呵
中午蓮約了她的堂弟一起在學生街吃飯,
蓮真是那個好呀,還給她堂弟買了鞋子,才30元,看起來挺不錯的呀!
我當時叫著說我也要買一雙回去,最后還真的買了雙布鞋,28元,我一直在笑,蓮被我的笑搞糊涂了
真的太便宜了?。ń裉斓谝淮未┥纤?,腳感還不錯,呵呵)
這天(周五)下午我們就在學生街逛了一下午,強呀?。ìF在想想,當時兩個人太強了)
(在逛期間,我們給小蝌蚪發了信息,告之我們倆在學生街)
晚上我們還是去麻煩阿紅,阿紅還是親自下櫥,阿紅的櫥藝越來越好了,那晚吃了可多了,
吃飽一稱,哇,96,天呀!不可思議!一會就超標啦!
那晚我們聊到挺晚的,雖然前晚跟蓮倆個幾乎沒睡
第二天我們回母校了,我們散步在我們曾經一起走過的每個角落:小樹林,含笑花,食堂,操場,天橋。。。
兩個人坐在操場旁,小棲了會
很不巧的是,這次回去一個老師都沒有見到面。。。。
中午吃完飯我們還去了福清中山路,以前周末經常去逛街的地方,呵呵
蓮給她媽媽買了件衣服,當時看到一件很漂亮的中袖衣服,買了
趕緊回福州見小蝌蚪。。。。。
當時見面的場景(畢業后第一次見面哦)。。。。我們笑聲不繼。。。。抱在一起。。。??梢姴糠窒嗥海?br />
那晚我們蓮,小蝌蚪三個人一起睡。。。。。。。。。
蓮急著要回廈門見她未來的姐夫,第二天鬧鐘調6點起床,呵呵
我們玩得很開心(回來得趕緊補充睡眠就是了 ,呵呵)





平平淡淡才是真,不知道用這句來總結這階段是對還是錯?
昨晚夢見老媽了,老媽還說我扎兩個辮子好看
相信在老媽那個年代扎著兩個辮子應該算很好看哦,呵呵!
老媽你在天堂一切都好吧!女兒好想你!
這周晚上開始上課了(周一晚上是班主任的課,班主任人挺逗的,上課沒有讓我想睡覺,呵呵),
為了晚上上完課,回宿舍比較方便,最近忙著在博物館一帶找房子
昨晚跟MM一起去看了一間中介,房子挺不錯的,但挺里面就是,走到博物館大概要6分鐘,
1000元/月,后來跟中介說了我們的需求
中介給房東打電話,沒接通。。。
我們先去了阿胖家吃沙鍋,等我們點完,電話來了,告之,那間已有人交了壓金,當時那個郁悶呀。。。
相當失望,在去吃飯的路上還想好周四或五請人打掃,周六搬進去,可一切落空了。。。。。
上周五去學校注冊了,今晚要開始上課了,想著迷茫。。。。。
三年的時間真不知道要怎么熬過去;
真的是只為了那張毫無意義的文憑!
不過,從小是個好學生,不敲課,不逃課,按時做作業,
可現在覺得在教室聽著老師講課有點聽不進去了,真不想去上課。。。
還沒開始上課就想著不去上課了,相當糟糕!
當到學校注冊完后,心想是不是什么時候會放棄不去讀。。。
真的有點迷茫,不知道這樣的選擇是否會堅持到底
春節回來第一天上班,相當睏!
趕緊準備下班,晚上DD請吃飯
今天天氣真好,太感謝太陽公公了,嘻嘻:)
我已經等你很久了,今天一來公司就把MSN簽名更改成:終于看到你了
最近連著下雨,衣服都沒干,到處濕濕的,特難受,這幾天還特別地冷!
明天可以回家了,不過,今年沒有買到汽車票,明天得在漳州轉車了
現在想著回家就激動!
在此,先祝大家春節快樂,身體健康,萬事如意!
感情的事不求速度,只求質量!
別把自己的感情投入得太積極!
多給彼此了解的時間和空間