锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鐗堟湰錛歷2.3 (2008-4-13) 浣滆咃細deerchao 杞澆璇鋒敞鏄?a >鏉ユ簮 30鍒嗛挓鍐呰浣犳槑鐧芥鍒欒〃杈懼紡鏄粈涔堬紝騫跺瀹冩湁涓浜涘熀鏈殑浜嗚В錛岃浣犲彲浠ュ湪鑷繁鐨勭▼搴忔垨緗戦〉閲屼嬌鐢ㄥ畠銆?/p>
鏈閲嶈鐨勬槸鈥斺旇緇欐垜30鍒嗛挓錛屽鏋滀綘娌℃湁浣跨敤姝e垯琛ㄨ揪寮忕殑緇忛獙錛岃涓嶈璇曞浘鍦?0縐?/em>鍐呭叆闂ㄢ斺旈櫎闈炰綘鏄秴浜?:) 鍒涓嬮潰閭d簺澶嶆潅鐨勮〃杈懼紡鍚撳掞紝鍙璺熺潃鎴戜竴姝ヤ竴姝ユ潵錛屼綘浼氬彂鐜版鍒欒〃杈懼紡鍏跺疄騫?span lang="zh-cn">娌℃湁浣犳兂鍍?
涓殑閭d箞鍥伴毦銆傚綋鐒訛紝濡傛灉浣犵湅瀹屼簡榪欑瘒鏁欑▼涔嬪悗錛屽彂鐜拌嚜宸辨槑鐧戒簡寰堝錛屽嵈鍙堝嚑涔庝粈涔堥兘璁頒笉寰楋紝閭d篃鏄緢姝e父鐨勨斺旀垜璁や負錛屾病鎺ヨЕ榪囨鍒欒〃杈懼紡鐨勪漢鍦ㄧ湅瀹岃繖
綃囨暀紼嬪悗錛岃兘鎶婃彁鍒拌繃鐨勮娉曡浣?0%浠ヤ笂鐨勫彲鑳芥т負闆躲傝繖閲屽彧鏄浣犳槑鐧藉熀鏈殑鍘熺悊錛屼互鍚庝綘榪橀渶瑕佸緇冧範錛屽浣跨敤錛屾墠鑳界啛緇冩帉鎻℃鍒欒〃杈懼紡銆?/p>
闄や簡浣滀負鍏ラ棬鏁欑▼涔嬪錛屾湰鏂囪繕璇曞浘鎴愪負鍙互鍦ㄦ棩甯稿伐浣滀腑浣跨敤鐨勬鍒欒〃杈懼紡璇硶鍙傝冩墜鍐屻傚氨浣滆呮湰浜虹殑緇忓巻鏉ヨ錛岃繖涓洰鏍囪繕鏄畬鎴愬緱涓嶉敊鐨勨斺斾綘鐪嬶紝鎴戣嚜宸變篃娌¤兘鎶婃墍鏈夌殑涓滆タ璁頒笅鏉ワ紝涓嶆槸鍚楋紵 娓呴櫎鏍煎紡 鏂囨湰鏍煎紡綰﹀畾錛?span class="name">涓撲笟鏈 鍏冨瓧絎?璇硶鏍煎紡 姝e垯琛ㄨ揪寮?/span> 姝e垯琛ㄨ揪寮忎腑鐨勪竴閮ㄥ垎(鐢ㄤ簬鍒嗘瀽) 瀵瑰叾榪涜鍖歸厤鐨勬簮瀛楃涓?/span> 瀵規鍒欒〃杈懼紡鎴栧叾涓竴閮ㄥ垎鐨勮鏄?/span> 闅愯棌杈規敞 鏈枃鍙寵竟鏈変竴浜涙敞閲婏紝涓昏鏄敤鏉ユ彁渚涗竴浜涚浉鍏充俊鎭紝鎴栬呯粰娌℃湁紼嬪簭鍛樿儗鏅殑璇昏呰В閲婁竴浜涘熀鏈蹇碉紝閫氬父鍙互蹇界暐銆?/p>
瀛楃鏄綆楁満杞歡澶勭悊鏂囧瓧鏃舵渶鍩烘湰鐨勫崟浣嶏紝鍙兘鏄瓧姣嶏紝鏁板瓧錛屾爣鐐圭鍙鳳紝絀烘牸錛屾崲琛岀錛屾眽瀛楃瓑絳夈?span class="name">瀛楃涓?/span>鏄?涓垨鏇村涓瓧絎︾殑搴忓垪銆?span class="name">鏂囨湰涔熷氨鏄枃瀛楋紝瀛楃涓層傝鏌愪釜瀛楃涓?span class="name">鍖歸厤鏌愪釜姝e垯琛ㄨ揪寮忥紝閫氬父鏄寚榪欎釜瀛楃涓查噷鏈変竴閮ㄥ垎錛堟垨鍑犻儴鍒嗗垎鍒級鑳芥弧瓚寵〃杈懼紡緇欏嚭鐨勬潯浠躲?/p>
鍦ㄧ紪鍐欏鐞嗗瓧絎︿覆鐨勭▼搴忔垨緗戦〉鏃訛紝緇忓父浼氭湁鏌ユ壘絎﹀悎鏌愪簺澶嶆潅瑙勫垯鐨勫瓧絎︿覆鐨勯渶瑕併?span class="name">姝e垯琛ㄨ揪寮?/span>灝辨槸鐢ㄤ簬鎻忚堪榪欎簺瑙勫垯鐨勫伐鍏楓傛崲鍙ヨ瘽璇達紝姝e垯琛ㄨ揪寮忓氨鏄褰曟枃鏈鍒欑殑浠g爜銆?/p>
寰堝彲鑳戒綘浣跨敤榪嘩indows/Dos涓嬬敤浜庢枃浠舵煡鎵劇殑閫氶厤絎?wildcard)錛屼篃灝辨槸*鍜?span class="code">?銆傚鏋滀綘鎯蟲煡鎵炬煇涓洰褰曚笅鐨勬墍鏈夌殑Word鏂囨。鐨勮瘽錛屼綘浼氭悳绱?span style="color: red;">*.doc銆傚湪榪欓噷錛?span class="code">*浼氳瑙i噴鎴愪換鎰忕殑瀛楃涓層傚拰閫氶厤絎︾被浼鹼紝姝e垯琛ㄨ揪寮忎篃鏄敤鏉ヨ繘琛屾枃鏈尮閰嶇殑宸ュ叿錛屽彧涓嶈繃姣旇搗閫氶厤絎︼紝瀹冭兘鏇寸簿紜湴鎻忚堪浣犵殑闇姹傗斺斿綋鐒訛紝浠d環灝辨槸鏇村鏉傗斺旀瘮濡備綘鍙互緙栧啓涓涓鍒欒〃杈懼紡錛岀敤鏉ユ煡鎵?span class="desc">鎵鏈変互0寮澶達紝鍚庨潰璺熺潃2-3涓暟瀛楋紝鐒跺悗鏄竴涓繛瀛楀彿“-”錛屾渶鍚庢槸7鎴?浣嶆暟瀛楃殑瀛楃涓?/span>(鍍?span class="string">010-12345678鎴?span class="string">0376-7654321)銆?/p>
瀛︿範姝e垯琛ㄨ揪寮忕殑鏈濂芥柟娉曟槸浠庝緥瀛愬紑濮嬶紝鐞嗚В渚嬪瓙涔嬪悗鍐嶈嚜宸卞渚嬪瓙榪涜淇敼錛屽疄楠屻備笅闈㈢粰鍑轟簡涓嶅皯綆鍗曠殑渚嬪瓙錛屽茍瀵瑰畠浠綔浜嗚緇嗙殑璇存槑銆?/p>
鍋囪浣犲湪涓綃囪嫳鏂囧皬璇撮噷鏌ユ壘hi錛屼綘鍙互浣跨敤姝e垯琛ㄨ揪寮?span class="regex">hi銆?/p>
榪欏嚑涔庢槸鏈綆鍗曠殑姝e垯琛ㄨ揪寮忎簡錛屽畠鍙互綺劇‘鍖歸厤榪欐牱鐨勫瓧絎︿覆錛?span class="desc">鐢變袱涓瓧絎︾粍鎴愶紝鍓嶄竴涓瓧絎︽槸h,鍚庝竴涓槸i銆傞氬父錛屽鐞嗘鍒欒〃杈懼紡鐨勫伐鍏蜂細鎻愪緵涓涓拷鐣ュぇ灝忓啓鐨勯夐」錛屽鏋滈変腑浜嗚繖涓夐」錛屽畠鍙互鍖歸厤hi,HI,Hi,hI榪欏洓縐嶆儏鍐典腑鐨勪換鎰忎竴縐嶃?/p>
涓嶅垢鐨勬槸錛屽緢澶氬崟璇嶉噷鍖呭惈hi榪欎袱涓繛緇殑瀛楃錛屾瘮濡?span class="string">him,history,high絳夌瓑銆傜敤hi鏉ユ煡鎵劇殑璇濓紝榪欓噷杈圭殑hi涔熶細琚壘鍑烘潵銆傚鏋滆綺劇‘鍦版煡鎵緃i榪欎釜鍗曡瘝鐨勮瘽錛屾垜浠簲璇ヤ嬌鐢?span class="regex">\bhi\b銆?/p>
\b鏄鍒欒〃杈懼紡瑙勫畾鐨勪竴涓壒孌婁唬鐮侊紙濂藉惂錛屾煇浜涗漢鍙畠鍏冨瓧絎︼紝metacharacter錛夛紝浠h〃鐫鍗曡瘝鐨勫紑澶存垨緇撳熬錛屼篃灝辨槸鍗曡瘝鐨勫垎鐣屽銆傝櫧鐒墮氬父鑻辨枃鐨勫崟璇嶆槸鐢辯┖鏍鹼紝鏍囩偣絎﹀彿鎴栬呮崲琛屾潵鍒嗛殧鐨勶紝浣嗘槸\b騫朵笉鍖歸厤榪欎簺鍗曡瘝鍒嗛殧瀛楃涓殑浠諱綍涓涓紝瀹?strong>鍙尮閰嶄竴涓綅緗?/strong>銆?/p>
濡傛灉闇瑕佹洿綺劇‘鐨勮娉曪紝\b鍖歸厤榪欐牱鐨勪綅緗細瀹冪殑鍓嶄竴涓瓧絎﹀拰鍚庝竴涓瓧絎︿笉鍏ㄦ槸(涓涓槸,涓涓笉鏄垨涓嶅瓨鍦?\w銆?/p>
鍋囧浣犺鎵劇殑鏄?span class="desc">hi鍚庨潰涓嶈繙澶勮窡鐫涓涓狶ucy錛屼綘搴旇鐢?span class="regex">\bhi\b.*\bLucy\b銆?/p>
榪欓噷錛?span class="part">.鏄彟涓涓厓瀛楃錛屽尮閰?span class="desc">闄や簡鎹㈣絎︿互澶栫殑浠繪剰瀛楃銆?span class="part">*鍚屾牱鏄厓瀛楃錛屼笉榪囧畠浠h〃鐨勪笉鏄瓧絎︼紝涔熶笉鏄綅緗紝鑰屾槸鏁伴噺鈥斺斿畠鎸囧畾*鍓嶈竟鐨勫唴瀹瑰彲浠ヨ繛緇噸澶嶅嚭鐜頒換鎰忔浠ヤ嬌鏁翠釜琛ㄨ揪寮忓緱鍒板尮閰?/span>銆傚洜姝わ紝.*榪炲湪涓璧峰氨鎰忓懗鐫浠繪剰鏁伴噺鐨勪笉鍖呭惈鎹㈣鐨勫瓧絎?/span>銆傜幇鍦?span class="regex">\bhi\b.*\bLucy\b鐨勬剰鎬濆氨寰堟槑鏄句簡錛?span class="desc">鍏堟槸涓涓崟璇峢i,鐒跺悗鏄換鎰忎釜浠繪剰瀛楃(浣嗕笉鑳芥槸鎹㈣)錛屾渶鍚庢槸Lucy榪欎釜鍗曡瘝銆?/p>
鎹㈣絎﹀氨鏄?\n',ASCII緙栫爜涓?0(鍗佸叚榪涘埗0x0A)鐨勫瓧絎︺?/p>
濡傛灉鍚屾椂浣跨敤鍏跺畠鍏冨瓧絎︼紝鎴戜滑灝辮兘鏋勯犲嚭鍔熻兘鏇村己澶х殑姝e垯琛ㄨ揪寮忋傛瘮濡備笅闈㈣繖涓緥瀛愶細 0\d\d-\d\d\d\d\d\d\d\d鍖歸厤榪欐牱鐨勫瓧絎︿覆錛?span class="desc">浠?寮澶達紝鐒跺悗鏄袱涓暟瀛楋紝鐒跺悗鏄竴涓繛瀛楀彿“-”錛屾渶鍚庢槸8涓暟瀛?/span>(涔熷氨鏄腑鍥界殑鐢佃瘽鍙風爜銆傚綋鐒訛紝榪欎釜渚嬪瓙鍙兘鍖歸厤鍖哄彿涓?浣嶇殑鎯呭艦)銆?/p>
榪欓噷鐨?span class="part">\d鏄釜鏂扮殑鍏冨瓧絎︼紝鍖歸厤涓浣嶆暟瀛?0錛屾垨1錛屾垨2錛屾垨……)銆?span class="part">-涓嶆槸鍏冨瓧絎︼紝鍙尮閰嶅畠鏈韓鈥斺旇繛瀛楃鎴栬呭噺鍙楓?/p>
涓轟簡閬垮厤閭d箞澶氱儲浜虹殑閲嶅錛屾垜浠篃鍙互榪欐牱鍐欒繖涓〃杈懼紡錛?span class="regex">0\d{2}-\d{8}銆?榪欓噷\d鍚庨潰鐨?span class="part">{2}({8})鐨勬剰鎬濇槸鍓嶉潰\d蹇呴』榪炵畫閲嶅鍖歸厤2嬈?8嬈?銆?/p>
鍏跺畠鍙敤鐨勬祴璇曞伐鍏? 濡傛灉浣犱笉瑙夊緱姝e垯琛ㄨ揪寮忓緢闅捐鍐欑殑璇濓紝瑕佷箞浣犳槸涓涓ぉ鎵嶏紝瑕佷箞錛屼綘涓嶆槸鍦扮悆浜恒傛鍒欒〃杈懼紡鐨勮娉曞緢浠や漢澶寸柤錛屽嵆浣垮緇忓父浣跨敤瀹冪殑浜烘潵璇翠篃鏄姝ゃ傜敱浜庨毦浜庤鍐欙紝瀹規槗鍑洪敊錛屾墍浠ユ壘涓縐嶅伐鍏峰姝e垯琛ㄨ揪寮忚繘琛屾祴璇曟槸寰堟湁蹇呰鐨勩?/p>
鐢變簬鍦ㄤ笉鍚岀殑鐜涓嬫鍒欒〃杈懼紡鐨勪竴浜涚粏鑺傛槸涓嶇浉鍚岀殑錛屾湰鏁欑▼浠嬬粛鐨勬槸寰蔣 .Net Framework 2.0涓嬫鍒欒〃杈懼紡鐨勮涓猴紝鎵浠ワ紝鎴戝悜浣犱粙緇嶄竴涓?Net涓嬬殑宸ュ叿Regex Tester銆傞鍏堜綘紜繚宸茬粡瀹夎浜?a title="杞埌涓嬭澆.Net Framework 2.0鐨勯〉闈?>.Net Framework 2.0錛岀劧鍚?a title="浠巜ww.unibetter.com涓嬭澆Regex Tester, 75KB">涓嬭澆Regex Tester銆傝繖鏄釜緇胯壊杞歡錛屼笅杞藉畬鍚庢墦寮鍘嬬緝鍖?鐩存帴榪愯RegexTester.exe灝卞彲浠ヤ簡銆?/p>
涓嬮潰鏄疪egex Tester榪愯鏃剁殑鎴浘錛?/p>
鐜板湪浣犲凡緇忕煡閬撳嚑涓緢鏈夌敤鐨勫厓瀛楃浜嗭紝濡?span class="code">\b,.,*錛岃繕鏈?span class="code">\d.姝e垯琛ㄨ揪寮忛噷榪樻湁鏇村鐨勫厓瀛楃錛屾瘮濡?span class="code">\s鍖歸厤浠繪剰鐨勭┖鐧界錛屽寘鎷┖鏍鹼紝鍒惰〃絎?Tab)錛屾崲琛岀錛屼腑鏂囧叏瑙掔┖鏍肩瓑銆?span class="code">\w鍖歸厤瀛楁瘝鎴栨暟瀛楁垨涓嬪垝綰挎垨姹夊瓧絳?/span>銆?/p>
瀵逛腑鏂?姹夊瓧鐨勭壒孌婂鐞嗘槸鐢?Net鎻愪緵鐨勬鍒欒〃杈懼紡寮曟搸鏀寔鐨勶紝鍏跺畠鐜涓嬬殑鍏蜂綋鎯呭喌璇鋒煡鐪嬬浉鍏蟲枃妗c?/p>
涓嬮潰鏉ョ湅鐪嬫洿澶氱殑渚嬪瓙錛?/p>
\ba\w*\b鍖歸厤浠ュ瓧姣?span class="part">a寮澶寸殑鍗曡瘝鈥斺斿厛鏄煇涓崟璇嶅紑濮嬪(\b)錛岀劧鍚庢槸瀛楁瘝a,鐒跺悗鏄換鎰忔暟閲忕殑瀛楁瘝鎴栨暟瀛?\w*)錛屾渶鍚庢槸鍗曡瘝緇撴潫澶?\b) 濂藉惂錛岀幇鍦ㄦ垜浠璇存鍒欒〃杈懼紡閲岀殑鍗曡瘝鏄粈涔堟剰鎬濆惂錛氬氨鏄浜庝竴涓殑榪炵畫鐨?span class="code">\w銆備笉閿欙紝榪欎笌瀛︿範鑻辨枃鏃惰鑳岀殑鎴愬崈涓婁竾涓悓鍚嶇殑涓滆タ鐨勭‘鍏崇郴涓嶅ぇ :) \d+鍖歸厤1涓垨鏇村榪炵畫鐨勬暟瀛?/span>銆傝繖閲岀殑+鏄拰*綾諱技鐨勫厓瀛楃錛屼笉鍚岀殑鏄?span class="code">*鍖歸厤閲嶅浠繪剰嬈?鍙兘鏄?嬈?錛岃?span class="code">+鍒欏尮閰?span class="desc">閲嶅1嬈℃垨鏇村嬈?/span>銆?/p>
\b\w{6}\b 鍖歸厤鍒氬ソ6涓瓧姣?鏁板瓧鐨勫崟璇?/span>銆?/p>
鍏冨瓧絎?span class="code">^ 榪欓噷鐨?span class="part">{5,12}鍜屽墠闈粙緇嶈繃鐨?span class="part">{2}鏄被浼肩殑錛屽彧涓嶈繃{2}鍖歸厤鍙兘涓嶅涓嶅皯閲嶅2嬈?/span>錛?span class="part">{5,12}鍒欐槸閲嶅鐨勬鏁頒笉鑳藉皯浜?嬈★紝涓嶈兘澶氫簬12嬈?/span>錛屽惁鍒欓兘涓嶅尮閰嶃?/p>
鍥犱負浣跨敤浜?span class="part">^ 鍜屽拷鐣ュぇ灝忓啓鐨勯夐」綾諱技錛屾湁浜涙鍒欒〃杈懼紡澶勭悊宸ュ叿榪樻湁涓涓鐞嗗琛岀殑閫夐」銆傚鏋滈変腑浜嗚繖涓夐」錛?span class="code">^ 濡傛灉浣犳兂鏌ユ壘鍏冨瓧絎︽湰韜殑璇濓紝姣斿浣犳煡鎵?span class="desc">.,鎴栬?span class="desc">*,灝卞嚭鐜頒簡闂錛氫綘娌″姙娉曟寚瀹氬畠浠紝鍥犱負瀹冧滑浼氳瑙i噴鎴愬埆鐨勬剰鎬濄傝繖鏃朵綘灝卞緱浣跨敤\鏉ュ彇娑堣繖浜涘瓧絎︾殑鐗規畩鎰忎箟銆傚洜姝わ紝浣犲簲璇ヤ嬌鐢?span class="regex">\.鍜?span class="regex">\*銆傚綋鐒訛紝瑕佹煡鎵?span class="desc">\鏈韓錛屼綘涔熷緱鐢?span class="regex">\\. 渚嬪錛?span class="regex">unibetter\.com鍖歸厤unibetter.com錛?span class="regex">C:\\Windows鍖歸厤C:\Windows銆?/p>
浣犲凡緇忕湅榪囦簡鍓嶉潰鐨?span class="code">*,+,{2},{5,12}榪欏嚑涓尮閰嶉噸澶嶇殑鏂瑰紡浜嗐備笅闈㈡槸姝e垯琛ㄨ揪寮忎腑鎵鏈夌殑闄愬畾絎?鎸囧畾鏁伴噺鐨勪唬鐮侊紝渚嬪*,{5,12}絳?錛?/p>
涓嬮潰鏄竴浜涗嬌鐢ㄩ噸澶嶇殑渚嬪瓙錛?/p>
Windows\d+鍖歸厤Windows鍚庨潰璺?涓垨鏇村鏁板瓧 ^\w+鍖歸厤涓琛岀殑絎竴涓崟璇?鎴栨暣涓瓧絎︿覆鐨勭涓涓崟璇嶏紝鍏蜂綋鍖歸厤鍝釜鎰忔濆緱鐪嬮夐」璁劇疆) 瑕佹兂鏌ユ壘鏁板瓧錛屽瓧姣嶆垨鏁板瓧錛岀┖鐧芥槸寰堢畝鍗曠殑錛屽洜涓哄凡緇忔湁浜嗗搴旇繖浜涘瓧絎﹂泦鍚堢殑鍏冨瓧絎︼紝浣嗘槸濡傛灉浣犳兂鍖歸厤娌℃湁棰勫畾涔夊厓瀛楃鐨勫瓧絎﹂泦鍚?姣斿鍏冮煶瀛楁瘝a,e,i,o,u),搴旇鎬庝箞鍔烇紵 寰堢畝鍗曪紝浣犲彧闇瑕佸湪鏂規嫭鍙烽噷鍒楀嚭瀹冧滑灝辮浜嗭紝鍍?span class="regex">[aeiou]灝卞尮閰?span class="desc">浠諱綍涓涓嫳鏂囧厓闊沖瓧姣?/span>錛?span class="regex">[.?!]鍖歸厤鏍囩偣絎﹀彿(.鎴?鎴?)銆?/p>
鎴戜滑涔熷彲浠ヨ交鏉懼湴鎸囧畾涓涓瓧絎?span class="name">鑼冨洿錛屽儚[0-9]浠h〃鐨勫惈鎰忎笌\d灝辨槸瀹屽叏涓鑷寸殑錛?span class="desc">涓浣嶆暟瀛?/span>錛涘悓鐞?span class="regex">[a-z0-9A-Z_]涔熷畬鍏ㄧ瓑鍚屼簬\w錛堝鏋滃彧鑰冭檻鑻辨枃鐨勮瘽錛夈?/p>
涓嬮潰鏄竴涓洿澶嶆潅鐨勮〃杈懼紡錛?span class="regex">\(?0\d{2}[) -]?\d{8}銆?/p>
“(”鍜?#8220;)”涔熸槸鍏冨瓧絎︼紝鍚庨潰鐨?a >鍒嗙粍鑺?/font>閲屼細鎻愬埌錛屾墍浠ュ湪榪欓噷闇瑕佷嬌鐢?a >杞箟銆?/p>
榪欎釜琛ㄨ揪寮忓彲浠ュ尮閰?span class="desc">鍑犵鏍煎紡鐨勭數璇濆彿鐮?/span>錛屽儚(010)88886666錛屾垨022-22334455錛屾垨02912345678絳夈傛垜浠瀹冭繘琛屼竴浜涘垎鏋愬惂錛氶鍏堟槸涓涓漿涔夊瓧絎?span class="part">\(,瀹冭兘鍑虹幇0嬈℃垨1嬈??),鐒跺悗鏄竴涓?span class="part">0錛屽悗闈㈣窡鐫2涓暟瀛?\d{2})錛岀劧鍚庢槸)鎴?span class="part">-鎴?span class="part">絀烘牸涓殑涓涓紝瀹冨嚭鐜?嬈℃垨涓嶅嚭鐜??)錛屾渶鍚庢槸8涓暟瀛?\d{8})銆?/p>
涓嶅垢鐨勬槸錛屽垰鎵嶉偅涓〃杈懼紡涔熻兘鍖歸厤010)12345678鎴?span class="string">(022-87654321榪欐牱鐨?#8220;涓嶆紜?#8221;鐨勬牸寮忋傝瑙e喅榪欎釜闂錛屾垜浠渶瑕佺敤鍒?span class="name">鍒嗘灊鏉′歡銆傛鍒欒〃杈懼紡閲岀殑鍒嗘灊鏉′歡鎸囩殑鏄湁鍑犵瑙勫垯錛屽鏋滄弧瓚沖叾涓換鎰忎竴縐嶈鍒欓兘搴旇褰撴垚鍖歸厤錛屽叿浣撴柟娉曟槸鐢?span class="code">|鎶婁笉鍚岀殑瑙勫垯鍒嗛殧寮銆傚惉涓嶆槑鐧斤紵娌″叧緋伙紝鐪嬩緥瀛愶細 0\d{2}-\d{8}|0\d{3}-\d{7}榪欎釜琛ㄨ揪寮忚兘鍖歸厤涓ょ浠ヨ繛瀛楀彿鍒嗛殧鐨勭數璇濆彿鐮侊細涓縐嶆槸涓変綅鍖哄彿錛?浣嶆湰鍦板彿(濡?10-12345678)錛屼竴縐嶆槸4浣嶅尯鍙鳳紝7浣嶆湰鍦板彿(0376-2233445)銆?/p>
\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}榪欎釜琛ㄨ揪寮?span class="desc">鍖歸厤3浣嶅尯鍙風殑鐢佃瘽鍙風爜錛屽叾涓尯鍙峰彲浠ョ敤灝忔嫭鍙鋒嫭璧鋒潵錛屼篃鍙互涓嶇敤錛屽尯鍙蜂笌鏈湴鍙烽棿鍙互鐢ㄨ繛瀛楀彿鎴栫┖鏍奸棿闅旓紝涔熷彲浠ユ病鏈夐棿闅?/span>銆備綘鍙互璇曡瘯鐢ㄥ垎鏋濇潯浠舵妸榪欎釜琛ㄨ揪寮忔墿灞曟垚涔熸敮鎸?浣嶅尯鍙風殑銆?/p>
\d{5}-\d{4}|\d{5}榪欎釜琛ㄨ揪寮忕敤浜庡尮閰嶇編鍥界殑閭斂緙栫爜銆傜編鍥介偖緙栫殑瑙勫垯鏄?浣嶆暟瀛楋紝鎴栬呯敤榪炲瓧鍙烽棿闅旂殑9浣嶆暟瀛椼備箣鎵浠ヨ緇欏嚭榪欎釜渚嬪瓙鏄洜涓哄畠鑳借鏄庝竴涓棶棰橈細浣跨敤鍒嗘灊鏉′歡鏃訛紝瑕佹敞鎰忓悇涓潯浠剁殑欏哄簭銆傚鏋滀綘鎶婂畠鏀規垚\d{5}|\d{5}-\d{4}鐨勮瘽錛岄偅涔堝氨鍙細鍖歸厤5浣嶇殑閭紪(浠ュ強9浣嶉偖緙栫殑鍓?浣?銆傚師鍥犳槸鍖歸厤鍒嗘灊鏉′歡鏃訛紝灝嗕細浠庡乏鍒板彸鍦版祴璇曟瘡涓潯浠訛紝濡傛灉婊¤凍浜嗘煇涓垎鏋濈殑璇濓紝灝變笉浼氬幓鍐嶇鍏跺畠鐨勬潯浠朵簡銆?/p>
鎴戜滑宸茬粡鎻愬埌浜嗘庝箞閲嶅鍗曚釜瀛楃錛堢洿鎺ュ湪瀛楃鍚庨潰鍔犱笂闄愬畾絎﹀氨琛屼簡錛夛紱浣嗗鏋滄兂瑕侀噸澶嶅涓瓧絎﹀張璇ユ庝箞鍔烇紵浣犲彲浠ョ敤灝忔嫭鍙鋒潵鎸囧畾瀛愯〃杈懼紡(涔熷彨鍋?span class="name">鍒嗙粍)錛岀劧鍚庝綘灝卞彲浠ユ寚瀹氳繖涓瓙琛ㄨ揪寮忕殑閲嶅嬈℃暟浜嗭紝浣犱篃鍙互瀵瑰瓙琛ㄨ揪寮忚繘琛屽叾瀹冧竴浜涙搷浣?鍚庨潰浼氭湁浠嬬粛)銆?/p>
(\d{1,3}\.){3}\d{1,3}鏄竴涓?span class="desc">綆鍗曠殑IP鍦板潃鍖歸厤琛ㄨ揪寮忋傝鐞嗚В榪欎釜琛ㄨ揪寮忥紝璇鋒寜涓嬪垪欏哄簭鍒嗘瀽瀹冿細\d{1,3}鍖歸厤1鍒?浣嶇殑鏁板瓧錛?span class="part">(\d{1,3}\.){3}鍖歸厤涓変綅鏁板瓧鍔犱笂涓涓嫳鏂囧彞鍙?榪欎釜鏁翠綋涔熷氨鏄繖涓?span class="name">鍒嗙粍)閲嶅3嬈?/span>錛屾渶鍚庡啀鍔犱笂涓涓竴鍒頒笁浣嶇殑鏁板瓧(\d{1,3})銆?/p>
IP鍦板潃涓瘡涓暟瀛楅兘涓嶈兘澶т簬255錛屽ぇ瀹跺崈涓囦笉瑕佽銆?4銆嬬涓夊鐨勭紪鍓х粰蹇芥偁浜?.. 涓嶅垢鐨勬槸錛屽畠涔熷皢鍖歸厤256.300.888.999榪欑涓嶅彲鑳藉瓨鍦ㄧ殑IP鍦板潃銆傚鏋滆兘浣跨敤綆楁湳姣旇緝鐨勮瘽錛屾垨璁歌兘綆鍗曞湴瑙e喅榪欎釜闂錛屼絾鏄鍒欒〃杈懼紡涓茍涓嶆彁渚涘叧浜庢暟瀛︾殑浠諱綍鍔熻兘錛屾墍浠ュ彧鑳戒嬌鐢ㄥ啑闀跨殑鍒嗙粍錛岄夋嫨錛屽瓧絎︾被鏉ユ弿榪頒竴涓紜殑IP鍦板潃錛?span class="regex">((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)銆?/p>
鐞嗚В榪欎釜琛ㄨ揪寮忕殑鍏抽敭鏄悊瑙?span class="part">2[0-4]\d|25[0-5]|[01]?\d\d?錛岃繖閲屾垜灝變笉緇嗚浜嗭紝浣犺嚜宸卞簲璇ヨ兘鍒嗘瀽寰楀嚭鏉ュ畠鐨勬剰涔夈?/p>
鏈夋椂闇瑕佹煡鎵句笉灞炰簬鏌愪釜鑳界畝鍗曞畾涔夌殑瀛楃綾葷殑瀛楃銆傛瘮濡傛兂鏌ユ壘闄や簡鏁板瓧浠ュ錛屽叾瀹冧換鎰忓瓧絎﹂兘琛岀殑鎯呭喌錛岃繖鏃墮渶瑕佺敤鍒?span class="name">鍙嶄箟錛?/p>
渚嬪瓙錛?span class="regex">\S+鍖歸厤涓嶅寘鍚┖鐧界鐨勫瓧絎︿覆銆?/p>
<a[^>]+>鍖歸厤鐢ㄥ皷鎷彿鎷搗鏉ョ殑浠寮澶寸殑瀛楃涓?/span>銆?/p>
浣跨敤灝忔嫭鍙鋒寚瀹氫竴涓瓙琛ㄨ揪寮忓悗錛?strong>鍖歸厤榪欎釜瀛愯〃杈懼紡鐨勬枃鏈?/strong>(涔熷氨鏄鍒嗙粍鎹曡幏鐨勫唴瀹?鍙互鍦ㄨ〃杈懼紡鎴栧叾瀹冪▼搴忎腑浣滆繘涓姝ョ殑澶勭悊銆傞粯璁ゆ儏鍐典笅錛屾瘡涓垎緇勪細鑷姩鎷ユ湁涓涓?span class="name">緇勫彿 鍚庡悜寮曠敤鐢ㄤ簬閲嶅鎼滅儲鍓嶉潰鏌愪釜鍒嗙粍鍖歸厤鐨勬枃鏈備緥濡傦紝\1浠h〃鍒嗙粍1鍖歸厤鐨勬枃鏈?/span>銆傞毦浠ョ悊瑙o紵璇風湅紺轟緥錛?/p>
\b(\w+)\b\s+\1\b鍙互鐢ㄦ潵鍖歸厤閲嶅鐨勫崟璇?/span>錛屽儚go go, 鎴栬?span class="string">kitty kitty銆傝繖涓〃杈懼紡棣栧厛鏄?span class="desc">涓涓崟璇?/span>錛屼篃灝辨槸鍗曡瘝寮濮嬪鍜岀粨鏉熷涔嬮棿鐨勫浜庝竴涓殑瀛楁瘝鎴栨暟瀛?/span>(\b(\w+)\b)錛岃繖涓崟璇嶄細琚崟鑾峰埌緙栧彿涓?鐨勫垎緇勪腑錛岀劧鍚庢槸1涓垨鍑犱釜絀虹櫧絎?/span>(\s+)錛屾渶鍚庢槸鍒嗙粍1涓崟鑾風殑鍐呭錛堜篃灝辨槸鍓嶉潰鍖歸厤鐨勯偅涓崟璇嶏級(\1)銆?/p>
浣犱篃鍙互鑷繁鎸囧畾瀛愯〃杈懼紡鐨?span class="name">緇勫悕 浣跨敤灝忔嫭鍙風殑鏃跺欙紝榪樻湁寰堝鐗瑰畾鐢ㄩ旂殑璇硶銆備笅闈㈠垪鍑轟簡鏈甯哥敤鐨勪竴浜涳細 鎴戜滑宸茬粡璁ㄨ浜嗗墠涓ょ璇硶銆傜涓変釜(?:exp)涓嶄細鏀瑰彉姝e垯琛ㄨ揪寮忕殑澶勭悊鏂瑰紡錛屽彧鏄繖鏍風殑緇勫尮閰嶇殑鍐呭涓嶄細鍍忓墠涓ょ閭f牱琚崟鑾峰埌鏌愪釜緇勯噷闈紝涔熶笉浼氭嫢鏈夌粍鍙?/span>銆?/p>
鍦扮悆浜猴紝鏄笉鏄寰楄繖浜涙湳璇悕縐板お澶嶆潅錛屽お闅捐浜嗭紵鎴戜篃鍜屼綘涓鏍楓傜煡閬撴湁榪欎箞涓縐嶄笢瑗垮氨琛屼簡錛屽畠鍙粈涔堬紝闅忓畠鍘誨惂錛?#8220;鏃犲悕錛屼竾鐗╀箣濮?..” 鎺ヤ笅鏉ョ殑鍥涗釜鐢ㄤ簬鏌ユ壘鍦ㄦ煇浜涘唴瀹?浣嗗茍涓嶅寘鎷繖浜涘唴瀹?涔嬪墠鎴栦箣鍚庣殑涓滆タ錛屼篃灝辨槸璇村畠浠儚\b,^,$閭f牱鐢ㄤ簬鎸囧畾涓涓綅緗紝榪欎釜浣嶇疆搴旇婊¤凍涓瀹氱殑鏉′歡(鍗蟲柇璦)錛屽洜姝ゅ畠浠篃琚О涓?span class="name">闆跺鏂█ 鏂█鐢ㄦ潵澹版槑涓涓簲璇ヤ負鐪熺殑浜嬪疄銆傛鍒欒〃杈懼紡涓彧鏈夊綋鏂█涓虹湡鏃舵墠浼氱戶緇繘琛屽尮閰嶃?/p>
(?=exp)涔熷彨闆跺搴︽棰勬祴鍏堣鏂█錛屽畠鏂█鑷韓鍑虹幇鐨勪綅緗殑鍚庨潰鑳藉尮閰嶈〃杈懼紡exp銆傛瘮濡?span class="regex">\b\w+(?=ing\b)錛屽尮閰?span class="desc">浠ng緇撳熬鐨勫崟璇嶇殑鍓嶉潰閮ㄥ垎(闄や簡ing浠ュ鐨勯儴鍒?錛屽鏌ユ壘I'm singing while you're dancing.鏃訛紝瀹冧細鍖歸厤sing鍜?span class="desc">danc銆?/p>
(?<=exp)涔熷彨闆跺搴︽鍥為【鍚庡彂鏂█錛屽畠鏂█鑷韓鍑虹幇鐨勪綅緗殑鍓嶉潰鑳藉尮閰嶈〃杈懼紡exp銆傛瘮濡?span class="regex">(?<=\bre)\w+\b浼氬尮閰?span class="desc">浠e寮澶寸殑鍗曡瘝鐨勫悗鍗婇儴鍒?闄や簡re浠ュ鐨勯儴鍒?錛屼緥濡傚湪鏌ユ壘reading a book鏃訛紝瀹冨尮閰?span class="desc">ading銆?/p>
鍋囧浣犳兂瑕佺粰涓涓緢闀跨殑鏁板瓧涓瘡涓変綅闂村姞涓涓楀彿(褰撶劧鏄粠鍙寵竟鍔犺搗浜?錛屼綘鍙互榪欐牱鏌ユ壘闇瑕佸湪鍓嶉潰鍜岄噷闈㈡坊鍔犻楀彿鐨勯儴鍒嗭細((?<=\d)\d{3})*\b錛岀敤瀹冨1234567890榪涜鏌ユ壘鏃剁粨鏋滄槸234567890銆?/p>
涓嬮潰榪欎釜渚嬪瓙鍚屾椂浣跨敤浜嗚繖涓ょ鏂█錛?span class="regex">(?<=\s)\d+(?=\s)鍖歸厤浠ョ┖鐧界闂撮殧鐨勬暟瀛?鍐嶆寮鴻皟錛屼笉鍖呮嫭榪欎簺絀虹櫧絎?銆?/p>
鍓嶉潰鎴戜滑鎻愬埌榪囨庝箞鏌ユ壘涓嶆槸鏌愪釜瀛楃鎴栦笉鍦ㄦ煇涓瓧絎︾被閲?/strong>鐨勫瓧絎︾殑鏂規硶(鍙嶄箟)銆備絾鏄鏋滄垜浠彧鏄兂瑕?strong>紜繚鏌愪釜瀛楃娌℃湁鍑虹幇錛屼絾騫朵笉鎯沖幓鍖歸厤瀹?/strong>鏃舵庝箞鍔烇紵渚嬪錛屽鏋滄垜浠兂鏌ユ壘榪欐牱鐨勫崟璇?-瀹冮噷闈㈠嚭鐜頒簡瀛楁瘝q,浣嗘槸q鍚庨潰璺熺殑涓嶆槸瀛楁瘝u,鎴戜滑鍙互灝濊瘯榪欐牱錛?/p>
\b\w*q[^u]\w*\b鍖歸厤鍖呭惈鍚庨潰涓嶆槸瀛楁瘝u鐨勫瓧姣峲鐨勫崟璇?/span>銆備絾鏄鏋滃鍋氭祴璇?鎴栬呬綘鎬濈淮瓚沖鏁忛攼錛岀洿鎺ュ氨瑙傚療鍑烘潵浜?錛屼綘浼氬彂鐜幫紝濡傛灉q鍑虹幇鍦ㄥ崟璇嶇殑緇撳熬鐨勮瘽錛屽儚Iraq,Benq錛岃繖涓〃杈懼紡灝變細鍑洪敊銆傝繖鏄洜涓?span class="part">[^u]鎬昏鍖歸厤涓涓瓧絎︼紝鎵浠ュ鏋渜鏄崟璇嶇殑鏈鍚庝竴涓瓧絎︾殑璇濓紝鍚庨潰鐨?span class="part">[^u]灝嗕細鍖歸厤q鍚庨潰鐨勫崟璇嶅垎闅旂(鍙兘鏄┖鏍鹼紝鎴栬呮槸鍙ュ彿鎴栧叾瀹冪殑浠涔?錛屽悗闈㈢殑\w*\b灝嗕細鍖歸厤涓嬩竴涓崟璇嶏紝浜庢槸\b\w*q[^u]\w*\b灝辮兘鍖歸厤鏁翠釜Iraq fighting銆?span class="name">璐熷悜闆跺鏂█鑳借В鍐寵繖鏍風殑闂錛屽洜涓哄畠鍙尮閰嶄竴涓綅緗紝騫朵笉娑堣垂浠諱綍瀛楃銆傜幇鍦紝鎴戜滑鍙互榪欐牱鏉ヨВ鍐寵繖涓棶棰橈細\b\w*q(?!u)\w*\b銆?/p>
闆跺搴﹁礋棰勬祴鍏堣鏂█(?!exp)錛?span class="desc">鏂█姝や綅緗殑鍚庨潰涓嶈兘鍖歸厤琛ㄨ揪寮廵xp銆備緥濡傦細\d{3}(?!\d)鍖歸厤涓変綅鏁板瓧錛岃屼笖榪欎笁浣嶆暟瀛楃殑鍚庨潰涓嶈兘鏄暟瀛?/span>錛?span class="regex">\b((?!abc)\w)+\b鍖歸厤涓嶅寘鍚繛緇瓧絎︿覆abc鐨勫崟璇?/span>銆?/p>
鍚岀悊錛屾垜浠彲浠ョ敤(?<!exp),闆跺搴︽鍥為【鍚庡彂鏂█鏉?span class="desc">鏂█姝や綅緗殑鍓嶉潰涓嶈兘鍖歸厤琛ㄨ揪寮廵xp 璇瘋緇嗗垎鏋愯〃杈懼紡(?<=<(\w+)>).*(?=<\/\1>)錛岃繖涓〃杈懼紡鏈鑳借〃鐜伴浂瀹芥柇璦鐨勭湡姝g敤閫斻?/p>
涓涓洿澶嶆潅鐨勪緥瀛愶細(?<=<(\w+)>).*(?=<\/\1>)鍖歸厤涓嶅寘鍚睘鎬х殑綆鍗旽TML鏍囩鍐呴噷鐨勫唴瀹?/span>銆?span class="code">(<?(\w+)>)鎸囧畾浜嗚繖鏍風殑鍓嶇紑錛?span class="desc">琚皷鎷彿鎷搗鏉ョ殑鍗曡瘝 灝忔嫭鍙風殑鍙︿竴縐嶇敤閫旀槸閫氳繃璇硶(?#comment)鏉ュ寘鍚敞閲娿備緥濡傦細2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)銆?/p>
瑕佸寘鍚敞閲婄殑璇濓紝鏈濂芥槸鍚敤“蹇界暐妯″紡閲岀殑絀虹櫧絎?#8221;閫夐」錛岃繖鏍峰湪緙栧啓琛ㄨ揪寮忔椂鑳戒換鎰忕殑娣誨姞絀烘牸錛孴ab錛屾崲琛岋紝鑰屽疄闄呬嬌鐢ㄦ椂榪欎簺閮藉皢琚拷鐣ャ傚惎鐢ㄨ繖涓夐」鍚庯紝鍦?鍚庨潰鍒拌繖涓琛岀粨鏉熺殑鎵鏈夋枃鏈兘灝嗚褰撴垚娉ㄩ噴蹇界暐鎺夈備緥濡傦紝鎴戜滑鍙互鍓嶉潰鐨勪竴涓〃杈懼紡鍐欐垚榪欐牱錛?/p>
褰撴鍒欒〃杈懼紡涓寘鍚兘鎺ュ彈閲嶅鐨勯檺瀹氱鏃訛紝閫氬父鐨勮涓烘槸錛堝湪浣挎暣涓〃杈懼紡鑳藉緱鍒板尮閰嶇殑鍓嶆彁涓嬶級鍖歸厤灝藉彲鑳藉鐨勫瓧絎︺傝冭檻榪欎釜琛ㄨ揪寮忥細a.*b錛屽畠灝嗕細鍖歸厤鏈闀跨殑浠寮濮嬶紝浠緇撴潫鐨勫瓧絎︿覆銆傚鏋滅敤瀹冩潵鎼滅儲aabab鐨勮瘽錛屽畠浼氬尮閰嶆暣涓瓧絎︿覆aabab銆傝繖琚О涓?span class="name">璐┆鍖歸厤銆?/p>
鏈夋椂錛屾垜浠洿闇瑕?span class="name">鎳掓儼鍖歸厤錛屼篃灝辨槸鍖歸厤灝藉彲鑳藉皯鐨勫瓧絎︺傚墠闈㈢粰鍑虹殑闄愬畾絎﹂兘鍙互琚漿鍖栦負鎳掓儼鍖歸厤妯″紡錛屽彧瑕佸湪瀹冨悗闈㈠姞涓婁竴涓棶鍙?span class="code">?銆傝繖鏍?span class="regex">.*?灝辨剰鍛崇潃鍖歸厤浠繪剰鏁伴噺鐨勯噸澶嶏紝浣嗘槸鍦ㄨ兘浣挎暣涓尮閰嶆垚鍔熺殑鍓嶆彁涓嬩嬌鐢ㄦ渶灝戠殑閲嶅銆傜幇鍦ㄧ湅鐪嬫噿鎯扮増鐨勪緥瀛愬惂錛?/p>
a.*?b鍖歸厤鏈鐭殑錛屼互a寮濮嬶紝浠緇撴潫鐨勫瓧絎︿覆銆傚鏋滄妸瀹冨簲鐢ㄤ簬aabab鐨勮瘽錛屽畠浼氬尮閰?span class="desc">aab錛堢涓鍒扮涓変釜瀛楃錛?/span>鍜?span class="desc">ab錛堢鍥涘埌絎簲涓瓧絎︼級銆?/p>
涓轟粈涔堢涓涓尮閰嶆槸aab錛堢涓鍒扮涓変釜瀛楃錛夎屼笉鏄痑b錛堢浜屽埌絎笁涓瓧絎︼級錛熺畝鍗曞湴璇達紝鍥犱負姝e垯琛ㄨ揪寮忔湁鍙︿竴鏉¤鍒欙紝姣旀噿鎯幫紡璐┆瑙勫垯鐨勪紭鍏堢駭鏇撮珮錛氭渶鍏堝紑濮嬬殑鍖歸厤鎷ユ湁鏈楂樼殑浼樺厛鏉冣斺擳he match that begins earliest wins銆?/p>
鍦–#涓紝浣犲彲浠ヤ嬌鐢?a title="MSDN 鐩稿叧鏂囨。">Regex(String, RegexOptions)鏋勯犲嚱鏁?/font>鏉ヨ緗鍒欒〃杈懼紡鐨勫鐞嗛夐」銆傚錛歊egex regex = new Regex("\ba\w{6}\b", RegexOptions.IgnoreCase); 涓婇潰浠嬬粛浜嗗嚑涓夐」濡傚拷鐣ュぇ灝忓啓錛屽鐞嗗琛岀瓑錛岃繖浜涢夐」鑳界敤鏉ユ敼鍙樺鐞嗘鍒欒〃杈懼紡鐨勬柟寮忋備笅闈㈡槸.Net涓父鐢ㄧ殑姝e垯琛ㄨ揪寮忛夐」錛?/p>
涓涓粡甯歌闂埌鐨勯棶棰樻槸錛氭槸涓嶆槸鍙兘鍚屾椂浣跨敤澶氳妯″紡鍜屽崟琛屾ā寮忎腑鐨勪竴縐嶏紵絳旀鏄細涓嶆槸銆傝繖涓や釜閫夐」涔嬮棿娌℃湁浠諱綍鍏崇郴錛岄櫎浜嗗畠浠殑鍚嶅瓧姣旇緝鐩鎬技錛堜互鑷充簬璁╀漢鎰熷埌鐤戞儜錛変互澶栥?/p>
榪欓噷浠嬬粛鐨勫鉤琛$粍璇硶鏄敱.Net Framework鏀寔鐨勶紱鍏跺畠璇█錛忓簱涓嶄竴瀹氭敮鎸佽繖縐嶅姛鑳斤紝鎴栬呮敮鎸佹鍔熻兘浣嗛渶瑕佷嬌鐢ㄤ笉鍚岀殑璇硶銆?/p>
鏈夋椂鎴戜滑闇瑕佸尮閰嶅儚( 100 * ( 50 + 15 ) )榪欐牱鐨勫彲宓屽鐨勫眰嬈℃х粨鏋?/span>錛岃繖鏃剁畝鍗曞湴浣跨敤\(.+\)鍒欏彧浼氬尮閰嶅埌鏈宸﹁竟鐨勫乏鎷彿鍜屾渶鍙寵竟鐨勫彸鎷彿涔嬮棿鐨勫唴瀹?榪欓噷鎴戜滑璁ㄨ鐨勬槸璐┆妯″紡錛屾噿鎯版ā寮忎篃鏈変笅闈㈢殑闂)銆傚亣濡傚師鏉ョ殑瀛楃涓查噷鐨勫乏鎷彿鍜屽彸鎷彿鍑虹幇鐨勬鏁頒笉鐩哥瓑錛屾瘮濡?span class="string">( 5 / ( 3 + 2 ) ) )錛岄偅鎴戜滑鐨勫尮閰嶇粨鏋滈噷涓よ呯殑涓暟涔熶笉浼氱浉絳夈傛湁娌℃湁鍔炴硶鍦ㄨ繖鏍風殑瀛楃涓查噷鍖歸厤鍒版渶闀跨殑錛岄厤瀵圭殑鎷彿涔嬮棿鐨勫唴瀹瑰憿錛?/p>
涓轟簡閬垮厤(鍜?span class="code">\(鎶婁綘鐨勫ぇ鑴戝交搴曟悶緋婃秱錛屾垜浠繕鏄敤灝栨嫭鍙蜂唬鏇垮渾鎷彿鍚с傜幇鍦ㄦ垜浠殑闂鍙樻垚浜嗗浣曟妸xx <aa <bbb> <bbb> aa> yy榪欐牱鐨勫瓧絎︿覆閲岋紝鏈闀跨殑閰嶅鐨勫皷鎷彿鍐呯殑鍐呭鎹曡幏鍑烘潵錛?/p>
榪欓噷闇瑕佺敤鍒頒互涓嬬殑璇硶鏋勯狅細 濡傛灉浣犱笉鏄竴涓▼搴忓憳錛堟垨鑰呬綘鑷О紼嬪簭鍛樹絾鏄笉鐭ラ亾鍫嗘爤鏄粈涔堜笢瑗匡級錛屼綘灝辮繖鏍風悊瑙d笂闈㈢殑涓夌璇硶鍚э細絎竴涓氨鏄湪榛戞澘
涓婂啓涓涓?group"錛岀浜屼釜灝辨槸浠庨粦鏉夸笂鎿︽帀涓涓?group"錛岀涓変釜灝辨槸鐪嬮粦鏉夸笂鍐欑殑榪樻湁娌℃湁"group"錛屽鏋滄湁灝辯戶緇尮閰峺es閮ㄥ垎錛屽惁鍒?
灝卞尮閰峮o閮ㄥ垎銆?/p>
鎴戜滑闇瑕佸仛鐨勬槸姣忕鍒頒簡宸︽嫭鍙鳳紝灝卞湪鍘嬪叆涓涓?Open",姣忕鍒頒竴涓彸鎷彿錛屽氨寮瑰嚭涓涓紝鍒頒簡鏈鍚庡氨鐪嬬湅鍫嗘爤鏄惁涓虹┖錛嶏紞濡傛灉涓嶄負絀洪偅灝辮瘉鏄庡乏鎷彿姣斿彸鎷彿澶氾紝閭e尮閰嶅氨搴旇澶辮觸銆傛鍒欒〃杈懼紡寮曟搸浼氳繘琛屽洖婧?鏀懼純鏈鍓嶉潰鎴栨渶鍚庨潰鐨勪竴浜涘瓧絎?錛屽敖閲忎嬌鏁翠釜琛ㄨ揪寮忓緱鍒板尮閰嶃?/p>
騫寵 緇勭殑涓涓渶甯歌鐨勫簲鐢ㄥ氨鏄尮閰岺TML,涓嬮潰榪欎釜渚嬪瓙鍙互鍖歸厤宓屽鐨?lt;div>鏍囩錛?span class="regex"><div[^>]*>[^<>]*(((?'Open'<div[^>]*>)[^<>]*)+((?'-Open'</div>)[^<>]*)+)*(?(Open)(?!))</div>. 鎴戝凡緇忔弿榪頒簡鏋勯犳鍒欒〃杈懼紡鐨勫ぇ閲忓厓绱狅紝榪樻湁涓浜涙垜娌℃湁鎻愬埌鐨勪笢瑗褲備笅闈㈡槸鏈彁鍒扮殑鍏冪礌鐨勫垪琛紝鍖呭惈璇硶鍜岀畝鍗曠殑璇存槑銆備綘鍙互鍦ㄧ綉涓婃壘鍒版洿璇︾粏鐨勫弬
鑰冭祫鏂欐潵瀛︿範瀹冧滑--褰撲綘闇瑕佺敤鍒板畠浠殑鏃跺欍傚鏋滀綘瀹夎浜哅SDN Library,浣犱篃鍙互鍦ㄩ噷闈㈡壘鍒板叧浜?net涓嬫鍒欒〃杈懼紡璇︾粏鐨勬枃妗c?/p>
濂藉惂,鎴戞壙璁?鎴戦獥浜嗕綘,璇誨埌榪欓噷浣犺偗瀹氳姳浜嗕笉姝?0鍒嗛挓.鐩鎬俊鎴?榪欐槸鎴戠殑閿?鑰屼笉鏄洜涓轟綘澶.鎴戜箣鎵浠ヨ"30鍒嗛挓",鏄負浜嗚浣犳湁淇″績,鏈夎愬績緇х畫涓嬪幓.鏃㈢劧浣犵湅鍒頒簡榪欓噷,閭h瘉鏄庢垜鐨勯槾璋嬫垚鍔熶簡.琚拷鎮犵殑鎰熻寰堢埥鍚э紵 瑕佹姇璇夋垜,鎴栬呰寰楁垜鍏跺疄鍙互鍋氬緱鏇村ソ,鎴栬呮湁浠諱綍鍏跺畠闂,嬈㈣繋鏉?a >鎴戠殑鍗氬璁╂垜鐭ラ亾. Luma, 娓呭崕澶у Note: 鍦ㄦ鎰熻阿綰湡IP鏁版嵁搴撲綔鑰呴噾鐙愬拰閭e敮涓涓浠芥枃妗g殑浣滆呫?/p>
淇敼鍘嗗彶: 鑷粠鏈変簡IP鏁版嵁搴撹繖縐嶄笢瑗匡紝QQ澶栨寕鐨勬樉紺篒P鍔熻兘涔熼殢涔嬭岀敓錛屾湰浜鴻璇嗛紿勶紝鏄惁榪樻湁鍏朵粬搴旂敤涓嶅緱鑰岀煡錛屼笉榪囷紝IP鏁版嵁搴撶‘瀹炴槸涓笉閿欑殑涓滆タ銆?
濡備粖緗戠粶涓婃渶嫻佽鐨処P鏁版嵁搴撴垜鎯沖簲璇ユ槸綰湡鐗堢殑錛堣閿欎簡涔熶笉瑕佹墎鎴戯級錛岃縿浠婁負姝㈠叾IP璁板綍鏉℃暟宸茬粡鎺ヨ繎30000錛屽浜庢湁浜汭P鐢氳嚦鑳界簿紜埌妤煎眰錛屼笉浜?
蹇搲銆?004騫?銆?鏈堥棿錛屾閫umaQQ鐮村湡鍔ㄥ伐錛屼負浜嗗姞涓婅繖涓漢浜洪兘鍠滄錛屼絾鏄ソ鍍忎漢浜洪兘涓嶇煡閬撲負浠涔堝枩嬈㈢殑鏄綢P鍔熻兘錛屾垜涔熼噰鐢ㄤ簡綰湡鐗圛P鏁?
鎹簱錛屽畠鐨勪紭鐐規槸璁板綍澶氾紝鏌ヨ閫熷害蹇紝瀹冨彧鐢ㄤ竴涓枃浠禥QWry.dat灝卞寘鍚簡鎵鏈夎褰曪紝鏂逛究宓屽叆鍒板叾浠栫▼搴忎腑錛屼篃鏂逛究鍗囩駭銆?/p>
QQWry.dat鏂囦歡鍦ㄧ粨鏋勪笂鍒嗕負3鍧楋細鏂囦歡澶達紝璁板綍鍖猴紝绱㈠紩鍖恒備竴鑸垜浠鏌ユ壘IP鏃訛紝鍏堝湪绱㈠紩鍖烘煡鎵捐褰曞亸縐伙紝鐒跺悗鍐嶅埌璁板綍鍖鴻鍑轟俊鎭傜敱浜?
璁板綍鍖虹殑璁板綍鏄笉瀹氶暱鐨勶紝鎵浠ョ洿鎺ュ湪璁板綍鍖轟腑鎼滅儲鏄笉鍙兘鐨勩傜敱浜庤褰曟暟姣旇緝澶氾紝濡傛灉鎴戜滑閬嶅巻绱㈠紩鍖轟篃浼氭槸鏈夌偣鎱㈢殑錛屼竴鑸潵璇達紝鎴戜滑鍙互鐢ㄤ簩鍒嗘煡鎵炬硶鎼滅儲
绱㈠紩鍖猴紝鍏墮熷害姣旈亶鍘嗙儲寮曞尯蹇嫢騫叉暟閲忕駭銆傚浘1鏄疩QWry.dat鐨勬枃浠剁粨鏋勫浘銆?/p>
瑕佹敞鎰忕殑鏄紝QQWry.dat閲岄潰鍏ㄩ儴閲囩敤浜唋ittle-endian瀛楄妭搴?/p>
QQWry.dat鐨勬枃浠跺ご鍙湁8涓瓧鑺傦紝鍏剁粨鏋勯潪甯哥畝鍗曪紝棣栧洓涓瓧鑺傛槸絎竴鏉$儲寮曠殑緇濆鍋忕Щ錛屽悗鍥涗釜瀛楄妭鏄渶鍚庝竴鏉$儲寮曠殑緇濆鍋忕Щ銆?/p>
姣忔潯IP璁板綍閮界敱鍥藉鍜屽湴鍖哄悕緇勬垚錛屽浗瀹跺湴鍖哄湪榪欓噷騫朵笉鏄お紜垏錛屽洜涓哄彲鑳戒細鏌ュ嚭鏉?#8220;娓呭崕澶у璁$畻鏈虹郴”涔嬬被鐨勶紝榪欓噷娓呭崕澶у灝辨垚浜嗗浗瀹跺悕浜嗭紝鎵浠?
榪欎釜鍥藉鍦板尯鍚嶅拰IP鏁版嵁搴撳埗浣滅殑鏃跺欐湁鍏崇郴銆傛墍浠ヨ褰曠殑鏍煎紡鏈夌偣鍍廞Name錛屾湁涓涓叏灞閮ㄥ垎鍜屽眬閮ㄩ儴鍒嗙粍鎴愶紝鎴戜滑榪欓噷榪樻槸娌跨敤鍥藉鍚嶅拰鍦板尯鍚嶇殑璇存硶銆?/p>
浜庢槸鎴戜滑鎯寵薄鐫涓鏉¤褰曠殑鏍煎紡搴旇鏄?
[IP鍦板潃][鍥藉鍚峕[鍦板尯鍚峕錛屽綋鐒訛紝榪欎釜娌℃湁浠涔堥棶棰橈紝浣嗘槸榪欏彧鏄渶綆鍗曠殑鎯呭喌銆傚緢鏄劇劧錛屽浗瀹跺悕鍜屽湴鍖哄悕鍙兘浼氭湁寰堝鐨勯噸澶嶏紝濡傛灉姣忔潯璁板綍閮戒繚瀛樹竴
涓畬鏁寸殑鍚嶇О鎷瘋礉鏄潪甯鎬笉鐞嗘兂鐨勶紝鎵浠ユ垜浠氨闇瑕侀噸瀹氬悜浠ヨ妭鐪佺┖闂淬傛墍浠ヤ負浜嗗緱鍒頒竴涓浗瀹跺悕鎴栬呭湴鍖哄悕錛屾垜浠氨鏈変簡涓や釜鍙兘錛氱涓灝辨槸鐩存帴鐨勫瓧絎︿覆琛ㄧず鐨?
鍥藉鍚嶏紝絎簩灝辨槸涓涓?瀛楄妭鐨勭粨鏋勶紝絎竴涓瓧鑺傝〃鏄庝簡閲嶅畾鍚戠殑妯″紡錛屽悗闈?涓瓧鑺傛槸鍥藉鍚嶆垨鑰呭湴鍖哄悕鐨勫疄闄呭亸縐諱綅緗傚浜庡浗瀹跺悕鏉ヨ錛屾儏鍐佃繕鍙兘鏇村鏉?
浜涳紝鍥犱負榪欐牱鐨勯噸瀹氬悜鏈澶氬彲鑳芥湁涓ゆ銆?/p>
閭d箞浠涔堟槸閲嶅畾鍚戞ā寮忥紵鏍規嵁涓婇潰鎵璇達紝涓鏉¤褰曠殑鏍煎紡鏄痆IP鍦板潃][鍥藉璁板綍][鍦板尯璁板綍]錛屽鏋滃浗瀹惰褰曟槸閲嶅畾鍚戠殑璇濓紝閭d箞鍦板尯璁板綍鏄湁鍙兘娌℃湁鐨勶紝浜庢槸灝辨湁浜嗕袱縐嶆儏鍐碉紝鎴戠浠栧彨鍋氭ā寮?鍜屾ā寮?銆傛垜浠榪欎簺鏍煎紡鐨勬儏鍐典婦鍥捐鏄庯細 鍥?琛ㄧず浜嗘渶綆鍗曠殑IP璁板綍鏍煎紡錛屾垜鎯蟲病鏈変粈涔堝彲浠ヨВ閲婄殑 鍥?婕旂ず浜嗛噸瀹氬悜妯″紡1鐨勬儏鍐點傛垜浠湅鍒板湪妯″紡1鐨勬儏鍐典笅錛屽湴鍖鴻褰曚篃璺熺潃鍥藉璁板綍璧頒簡錛屽湪IP鍦板潃涔嬪悗鍙墿涓嬩簡鍥藉璁板綍鐨?瀛楄妭錛屽悗闈?涓瓧鑺傛瀯鎴愪簡涓涓寚閽堬紝鎸囧悜浜嗗疄闄呯殑鍥藉鍚嶏紝鐒跺悗鍙堣窡鐫鍦板潃鍚嶃傛ā寮?鐨勬爣璇嗗瓧鑺傛槸0x01銆?/p>
鍥?婕旂ず浜嗛噸瀹氬悜妯″紡2鐨勬儏鍐點傛垜浠湅鍒頒簡鍦ㄦā寮?鐨勬儏鍐典笅錛堝叾鏍囪瘑瀛楄妭鏄?x02錛夛紝鍦板尯璁板綍娌℃湁璺熺潃鍥藉璁板綍璧幫紝鍥犳鍦ㄥ浗瀹惰褰曚箣鍚?涓瓧鑺備箣
鍚庤繕鏄湁鍦板尯璁板綍銆傛垜鎯充綘宸茬粡鏄庣櫧浜嗘ā寮?鍜屾ā寮?鐨勫尯鍒紝鍗籌細妯″紡1鐨勫浗瀹惰褰曞悗闈笉浼氬啀鏈夊湴鍖鴻褰曪紝妯″紡2鐨勫浗瀹惰褰曞悗浼氭湁鍦板尯璁板綍銆備笅闈㈡垜浠潵鐪嬩竴
涓嬫洿澶嶆潅鐨勬儏鍐點?/p>
鍥?婕旂ず浜嗗綋鍥藉璁板綍涓烘ā寮?鐨勬椂鍊欏彲鑳藉嚭鐜扮殑鏇村鏉傛儏鍐碉紝鍦ㄨ繖縐嶆儏鍐典笅錛岄噸瀹氬悜鎸囧悜鐨勪綅緗粛鐒舵槸涓噸瀹氬悜錛屼笉榪囩浜屾閲嶅畾鍚戜負妯″紡2銆傚ぇ瀹朵笉鐢ㄦ媴
蹇冿紝娌℃湁妯″紡3浜嗭紝榪欎釜閲嶅畾鍚戜篃鏈澶氬彧鏈変袱嬈★紝騫朵笖濡傛灉鍙戠敓浜嗙浜屾閲嶅畾鍚戯紝鍒欏叾涓瀹氫負妯″紡2錛岃屼笖榪欑鎯呭喌鍙細鍙戠敓鍦ㄥ浗瀹惰褰曚笂錛屽浜庡湴鍖鴻褰曪紝妯″紡1
鍜屾ā寮?鏄竴鏍風殑錛屽湴鍖鴻褰曚篃涓嶄細鍙戠敓2嬈¢噸瀹氬悜銆備笉榪囷紝榪欎釜鍥捐繕鍙互鏇村鏉傦紝濡傚浘7錛?/p>
鍥?鏄ā寮?涓嬫渶澶嶆潅鐨勬販鍜屾儏鍐碉紝涓嶈繃鎴戞兂搴旇涔熷緢濂界悊瑙o紝鍙笉榪囧湴鍖鴻褰曚篃鏉ラ噸瀹氬悜鑰屽凡錛屾湁涓鐐規垜瑕佹彁閱掍綘錛屽鏋滈噸瀹氬悜鐨勫湴鍧鏄?錛屽垯琛ㄧず鏈煡鐨勫湴鍖哄悕銆?/p>
鎵浠ユ垜浠葷粨濡備笅錛氫竴鏉P璁板綍鐢盵IP鍦板潃][鍥藉璁板綍][鍦板尯璁板綍]緇勬垚錛屽浜庡浗瀹惰褰曪紝鍙互鏈変笁縐嶈〃紺烘柟寮忥細瀛楃涓插艦寮忥紝閲嶅畾鍚戞ā寮?鍜岄噸瀹?
鍚戞ā寮?銆傚浜庡湴鍖鴻褰曪紝鍙互鏈変袱縐嶈〃紺烘柟寮忥細瀛楃涓插艦寮忓拰閲嶅畾鍚戯紝鍙﹀鏈変竴鏉¤鍒欙細閲嶅畾鍚戞ā寮?鐨勫浗瀹惰褰曞悗涓嶈兘璺熷湴鍖鴻褰曘傛寜鐓ц繖涓葷粨錛屽湪榪欎簺鏂瑰紡
涓悎鐞嗙粍鍚堬紝灝辨瀯鎴愪簡IP璁板綍鐨勬墍鏈夊彲鑳芥儏鍐點?/p>
鍦ㄦ垜浠戶緇幓浜嗚В绱㈠紩鍖虹殑緇撴瀯涔嬪墠錛屾垜浠厛鏉ヤ簡瑙d竴涓嬩負浣曡褰曞尯鐨勭粨鏋勮濡傛璁捐銆傛垜鎯充綘鍙兘鎯沖埌浜嗙瓟妗堬細瀛楃涓查噸鐢ㄣ傛病閿欙紝鍦ㄨ繖縐嶇粨鏋勪笅錛屽浜庝竴
涓浗瀹跺悕鍜屽湴鍖哄悕錛屾垜鍙渶瑕佷繚瀛樺叾涓嬈″氨鍙互浜嗐傛垜浠婦渚嬭鏄庯紝涓轟簡琛ㄧず鏂逛究錛屾垜浠敤灝忓啓瀛楁瘝浠h〃IP璁板綍錛孋琛ㄧず鍥藉鍚嶏紝A琛ㄧず鍦板尯鍚嶏細 浣犲彲浠ヤ婦鍑烘洿澶氱殑鎯呭喌錛屼綘涔熶細鍙戠幇鍦ㄨ繖縐嶇粨鏋勪笅錛屼笉鍚岀殑瀛楃涓插彧闇瑕佸瓨鍌ㄤ竴嬈°?/p>
鍦?浜嗚В鏂囦歡澶?閮ㄥ垎錛屾垜浠鏄庝簡鏂囦歡澶村疄闄呬笂鏄袱涓寚閽堬紝鍒嗗埆鎸囧悜浜嗙涓鏉$儲寮曞拰鏈鍚庝竴鏉$儲寮曠殑緇濆鍋忕Щ銆傚鍥?鎵紺猴細 瀹炲湪鏄緢綆鍗曪紝涓嶆槸鍚楋紵浠庢枃浠跺ご浣犲氨鍙互瀹氫綅鍒扮儲寮曞尯錛岀劧鍚庝綘灝卞彲浠ュ紑濮嬫悳绱P浜嗭紒姣忔潯绱㈠紩闀垮害涓?涓瓧鑺傦紝鍓?涓瓧鑺傛槸璧峰IP鍦板潃錛屽悗涓変釜瀛?
鑺傚氨鎸囧悜浜咺P璁板綍銆傝繖閲屾湁浜涙蹇甸渶瑕佽鏄庝竴涓嬶紝浠涔堟槸璧峰IP錛岄偅涔堟湁娌℃湁緇撴潫IP錛?鍋囪鏈夎繖涔堜竴鏉¤褰曪細166.111.0.0 -
166.111.255.255錛岄偅涔?66.111.0.0灝辨槸璧峰IP錛?66.111.255.255灝辨槸緇撴潫IP錛岀粨鏉烮P灝辨槸IP璁板綍涓殑閭eご
4涓瓧鑺傦紝榪欎笅浣犲簲璇ュ氨娓呮浜嗗惂銆備簬鏄箮錛屾瘡鏉$儲寮曢厤鍚堜竴鏉¤褰曪紝鏋勬垚浜嗕竴涓狪P鑼冨洿錛屽鏋滀綘瑕佹煡鎵?66.111.138.138鎵鍦ㄧ殑浣嶇疆錛屼綘灝變細鍙?
鐜?66.111.138.138钀藉湪浜?66.111.0.0 - 166.111.255.255
榪欎釜鑼冨洿鍐咃紝閭d箞浣犲氨鍙互欏虹潃榪欐潯绱㈠紩鍘昏鍙栧浗瀹跺拰鍦板尯鍚嶄簡銆傞偅涔堟垜浠粰鍑轟竴涓渶璇︾粏鐨勫浘瑙e惂錛?/p>
鐜板湪涓鍒囬兘娓呮浜嗘槸涓嶆槸錛熶篃璁歌繕鏈変竴鐐逛綘涓嶆竻妤氾紝QQWry.dat鐨勭増鏈俊鎭瓨鍦ㄥ摢閲屽憿錛?
絳旀鏄細鏈鍚庝竴鏉P璁板綍瀹為檯涓婂氨鏄増鏈俊鎭紝鏈鍚庝竴鏉¤褰曟樉紺哄嚭鏉ュ氨鏄繖鏍鳳細255.255.255.0 255.255.255.255 綰湡緗戠粶
2004騫?鏈?5鏃P鏁版嵁銆侽K錛屽埌鐜板湪浣犲簲璇ュ叏閮ㄦ竻妤氫簡銆?/p>
涓嬩竴姝ワ細鎴戠粰鍑轟竴涓鍙朓P璁板綍鐨勭▼搴忕墖鏂紝姝ょ墖鏂憳褰曡嚜LumaQQ婧愭枃浠秂du.tsinghua.lumaqq.IPSeeker.java錛屽鏋滀綘鏈夊叴瓚o紝鍙互涓嬭澆婧愪唬鐮佽緇嗙湅鐪嬨?/p>
浠g爜騫朵笉澶嶆潅錛実etIPLocation鏄富瑕佹柟娉曪紝瀹冩鏌ュ浗瀹惰褰曟牸寮忥紝騫墮拡瀵瑰瓧絎︿覆褰㈠紡錛屾ā寮?錛屾ā寮?閲囩敤涓嶅悓鐨勪唬鐮侊紝readArea鍒欑浉瀵圭畝鍗曪紝鍥犱負鍙湁瀛楃涓插拰閲嶅畾鍚戜袱縐嶆儏鍐甸渶瑕佸鐞嗐?/p>
綰湡IP鏁版嵁搴撶殑緇撴瀯浣垮緱鏌ユ壘IP綆鍗曡繀閫燂紝涓嶈繃浣犳兂瑕佺紪杈戝畠鍗存槸姣旇緝楹葷儲鐨勶紝鎴戞兂搴旇闇瑕佷笓闂ㄧ殑宸ュ叿鏉ョ敓鎴怮QWry.dat鏂囦歡錛岀敱浜庡叾鏂囦歡鏍煎紡鐨勯檺鍒訛紝浣犺鐩存帴娣誨姞IP璁板綍灝變笉瀹規槗浜嗐備笉榪囷紝鑳芥煡鍒癐P宸茬粡寰堝紑蹇冧簡錛屽笇鏈涚函鐪熻褰曡秺鏉ヨ秺澶氾綖銆?/p> 浣滆匨atthias Ettrich錛岃瘧鑰匞oogol Lee錛屽師鏂囧湴鍧鍦?a >榪欓噷銆? 鍦ㄥ瓚o紙Trolltech錛夛紝涓轟簡鏀硅繘Qt鐨勫紑鍙戜綋楠岋紝鎴戜滑鍋氫簡澶ч噺鐨勭爺絀躲傝繖綃囨枃绔犻噷錛屾垜鎵撶畻鍒嗕韓涓浜涙垜浠殑鍙戠幇錛屼互鍙婁竴浜涙垜浠湪璁捐Qt4鏃剁敤鍒扮殑鍘熷垯錛屽茍涓斿睍紺哄浣曟妸榪欎簺鍘熷垯搴旂敤鍒頒綘鐨勪唬鐮侀噷銆? 璁捐搴旂敤紼嬪簭鎺ュ彛錛孉PI錛屾槸寰堥毦鐨勩傝繖鏄竴闂ㄥ拰璁捐璇█鍚屾牱闅劇殑鑹烘湳銆傝繖閲屽彲浠ラ夋嫨澶鐨勫師鍒欙紝鐢氳嚦鏈夊緢澶氬師鍒欏拰鍏朵粬鍘熷垯鏈夌煕鐩俱? 鐜板湪錛岃綆楁満縐戝鏁欒偛鎶婂緢澶х殑鍔涙皵鏀懼湪綆楁硶鍜屾暟鎹粨鏋勪笂錛岃屽緢灝戝叧娉ㄨ璁¤璦鍜屾鏋惰儗鍚庣殑鍘熷垯銆傝繖璁╁簲鐢ㄧ▼搴忓憳瀹屽叏娌℃湁鍑嗗鍘婚潰瀵硅秺鏉ヨ秺閲嶈鐨勪換鍔★細鍒涢犲彲閲嶇敤鐨勭粍浠躲? 鍦ㄩ潰鍚戝璞¤璦鏅強涔嬪墠錛屽彲閲嶇敤鐨勯氱敤浠g爜澶ч儴鍒嗘槸鐢卞簱鎻愪緵鑰呭啓鐨勶紝鑰屼笉鏄簲鐢ㄧ▼搴忓憳銆傚湪Qt鐨勪笘鐣岄噷錛岃繖縐嶇姸鍐墊湁浜嗘槑鏄劇殑鏀瑰杽銆傚湪浠諱綍鏃跺欙紝鐢≦t緙栫▼灝辨槸鍐欐柊鐨勭粍浠躲備竴涓吀鍨嬬殑Qt搴旂敤紼嬪簭鑷沖皯閮戒細鏈夊嚑涓湪紼嬪簭涓弽澶嶄嬌鐢ㄧ殑鑷畾涔夌粍浠躲備竴鑸潵璇達紝鍚屾牱鐨勭粍浠朵細鎴愪負鍏朵粬搴旂敤紼嬪簭鐨勪竴閮ㄥ垎銆侹DE錛孠妗岄潰鐜錛岃蛋寰楁洿榪滐紝鐢ㄨ澶氳拷鍔犵殑搴撴潵鎵╁睍Qt錛屽疄鐜頒簡鏁扮櫨涓檮鍔犵被銆傦紙涓鑸潵璇達紝涓涓被灝辨槸涓涓彲閲嶇敤緇勪歡錛屽師鏂囪繖閲屾病鏈夊啓娓呮銆傦級 浣嗘槸錛屼竴涓ソ鐨勶紝楂樻晥鐨凜++ API鏄敱浠涔堢粍鎴愮殑鍛紵鏄ソ榪樻槸鍧忥紝鍙栧喅浜庡緢澶氬洜绱犫斺旀瘮濡傦紝鎵嬪ご鐨勫伐浣滃拰鐗瑰畾鐨勭洰鏍囩兢浣撱傚ソ鐨凙PI鏈夊緢澶氱壒鎬э紝涓浜涚壒鎬ф槸澶у閮芥兂瑕佺殑錛岃屽彟涓浜涘垯鏄拡瀵圭壒瀹氶棶棰樺煙鐨勩? API鏄潰鍚戠▼搴忓憳鐨勶紝鐢ㄦ潵鎻忚堪鎻愪緵緇欐渶緇堢敤鎴風殑GUI鏄粈涔堟牱瀛愩侫PI涓殑P甯﹁〃紼嬪簭鍛橈紙Programmer錛夛紝鑰屼笉鏄▼搴忥紙Program錛夛紝鐢ㄦ潵寮鴻皟API鏄粰紼嬪簭鍛樼敤鐨勶紝緇欎漢綾葷殑紼嬪簭鍛樼敤鐨勩? 鎴戜滑鍧氫俊API搴旇鏄渶灝忓寲涓斿畬鏁寸殑錛屾嫢鏈夋竻鏅頒笖綆鍗曠殑璇箟錛岀洿瑙夊寲錛屽鏄撹蹇嗭紝騫朵笖寮曞浜哄啓鍑烘槗璇葷殑浠g爜銆? 鏈鍚庯紝璁頒綇錛屼笉鍚岀被鍨嬬殑鐢ㄦ埛浼氱敤鍒癆PI鐨勪笉鍚岄儴鍒嗐傝櫧鐒剁畝鍗曠殑瀹炰緥鍖栦竴涓猀t綾繪槸闈炲父鐩磋鍖栫殑錛岃璧勬繁涓撳鍦ㄨ瘯鍥懼瓙綾誨寲涔嬪墠璇諱竴閬嶆枃妗o紝鏄緢鍚堢悊鐨勩? 榪欐槸涓父瑙佺殑璇В錛氭洿濂界殑API錛岀敤鏇村皯鐨勪唬鐮佸畬鎴愪竴浠朵簨銆傛案榪滆浣忎唬鐮佷竴嬈″啓灝憋紝涔嬪悗闇瑕佷笉鏂殑闃呰騫剁悊瑙c傛瘮濡傦細 榪滄瘮涓嬮潰閭f牱闅捐錛堢敋鑷抽毦鍐欙級錛? 甯冨皵鍙傛暟閫氬父浼氬鑷翠笉鏄撹鐨勪唬鐮併傛洿榪涗竴姝ワ紝緇欎竴涓凡緇忓瓨鍦ㄧ殑鍑芥暟鍔犲叆涓涓竷灝斿弬鏁幫紝榪欏父甯告槸涓敊璇傚湪Qt閲岋紝涓涓紶緇熺殑渚嬪瓙鏄痳epaint()錛岃繖涓嚱鏁板甫鏈変竴涓竷灝斿弬鏁幫紝鏉ユ爣璇嗘槸鍚︽摝闄よ儗鏅紙榛樿鎿﹂櫎錛夈傝繖璁╀唬鐮侀氬父鍐欐垚錛? 鍒濆鑰呭緢瀹規槗鎶婅繖鍙ヨ瘽鐞嗚В鎴?#8220;鍒噸鐢?#8221;錛? 榪欐牱鍋氭槸鑰冭檻鍒板竷灝斿弬鏁板彲浠ュ噺灝戜竴涓嚱鏁幫紝閬垮厤浠g爜鑶ㄨ儉銆備簨瀹炰笂錛岃繖鍙嶈屽鍔犱簡浠g爜閲忋傛湁澶氬皯Qt鐢ㄦ埛鐪熺殑璁頒綇浜嗕笅闈笁琛岀▼搴忛兘鏄仛浠涔堢殑錛? 涓涓ソ涓浜涚殑API鍙兘鐪嬭搗鏉ユ槸榪欐牱錛? 鍦≦t4閲岋紝鎴戜滑閲嶆柊璁捐浜唚idget錛屼嬌寰楃敤鎴蜂笉鍐嶉渶瑕佷笉閲嶇敾鑳屾櫙鐨勯噸鐢粀idget錛屾潵瑙e喅榪欎釜闂銆俀t4鍘熺敓鏀寔鍙岀紦瀛橈紝搴熸帀浜嗚繖涓壒鎬с? 榪欓噷榪樻湁涓浜涗緥瀛愶細 涓涓樉鑰屾槗瑙佺殑瑙e喅鏂規硶鏄紝浣跨敤鏋氫婦綾誨瀷浠f浛甯冨皵鍙傛暟銆傝繖姝f槸鎴戜滑鍦≦t4涓?a >QString澶у皬鍐欐晱鎰熸椂鐨勫鐞嗘柟娉曘傛瘮杈冿細 鐩鎬技鐨勭被搴旇鍚湁鐩鎬技鐨凙PI銆傚湪蹇呰鐨勬椂鍊欌斺斿氨鏄錛岄渶瑕佷嬌鐢ㄨ繍琛屾椂澶氭佺殑鏃跺欌斺旇繖鍙互閫氳繃緇ф壙瀹炵幇銆備絾鏄鎬佷緷鏃т細鍙戠敓鍦ㄨ璁℃椂鏈熴傛瘮濡傦紝濡傛灉浣犵敤QListBox浠f浛QComboBox錛屾垨鑰呯敤QSlider浠f浛QSpinBox錛屼綘浼氬彂鐜扮浉浼肩殑API浣胯繖縐嶆浛鎹㈤潪甯稿鏄撱傝繖灝辨槸鎴戜滑鎵璇寸殑“闈欐佸鎬?#8221;銆? 闈欐佸鎬佷篃浣緼PI鍜岀▼搴忔ā寮忔洿瀹規槗璁板繂銆備綔涓虹粨璁猴紝涓緇勭浉鍏崇被浣跨敤鐩鎬技鐨凙PI錛屾湁鏃惰姣旂粰姣忎釜綾繪彁渚涘畬緹庣殑鍗曠嫭API錛岃濂姐? 錛堣瘧娉細C++ 0x灝嗚寮曞叆鐨刢oncept錛屽氨鏄潤鎬佸鎬佺殑璇硶灞傚疄鐜般傝繖涓姣斿崟鐙殑鍑芥暟鍚嶇浉浼兼洿寮哄ぇ涓旀槗鐢ㄣ傦級 鍛藉悕錛屽ぇ姒傛槸璁捐API鏃跺敮涓鏈閲嶈鐨勯棶棰樹簡銆傝鎬庝箞縐板懠榪欎釜綾伙紵鎴愬憳鍑芥暟璇ュ彨浠涔堬紵 涓浜涜鍒欓氬父瀵規墍鏈夊悕瀛楅兘鏄湁鐢ㄧ殑銆傞鍏堬紝灝卞儚鎴戜箣鍓嶆彁鍒扮殑錛屽埆鐢ㄧ緝鍐欍傜敋鑷沖緢鏄庢樉鐨勭緝鍐欙紝姣斿“prev”琛ㄧず“previous”浠庨暱榪滅湅涔熸槸涓嶅垝綆楃殑錛屽洜涓虹敤鎴峰繀欏昏浣忓摢浜涜瘝鏄緝鍐欍? 濡傛灉API鏈韓涓嶄竴鑷達紝浜嬫儏鑷劧浼氬彉寰楀緢緋熺硶錛屾瘮濡傦紝 Qt3鏈塧ctivatePreviousWindow()鍜宖etchPrev()銆傚潥鎸?#8220;娌℃湁緙╁啓”鐨勮鍒欐洿瀹規槗鍒涘緩涓鑷寸殑API銆? 鍙︿竴涓噸瑕佷絾鏇村姞寰鐨勮鍒欐槸錛屽湪璁捐綾葷殑鏃跺欙紝蹇呴』灝藉姏淇濊瘉瀛愮被鍛藉悕絀洪棿鐨勫共鍑銆傚湪Qt3閲岋紝娌℃湁寰堝ソ鐨勯伒瀹堣繖涓鍒欍傛瘮濡傦紝鎷?a >QToolButton鏉ヤ婦渚嬨傚鏋滀綘鍦≦t3閲岋紝瀵逛竴涓?a >QToolButton璋冪敤name()銆乧aption()銆乼ext()鎴栬卼extLabel()錛屼綘甯屾湜鍋氫粈涔堝憿錛熶綘鍙互鍦≦t Designer閲屾嬁QToolButton璇曡瘯錛? 鐢變簬瀵瑰彲璇繪х殑鍏蟲敞錛宯ame鍦≦t4閲岃縐頒綔objectName錛宑aption鍙樻垚浜唚indowsTitle錛岃屽湪QToolButton閲屼笉鍐嶆湁鍗曠嫭鐨則extLabel灞炴с? 鏍囪瘑涓緇勭被鑰屼笉鏄崟鐙粰姣忎釜綾繪壘涓伆褰撶殑鍚嶅瓧銆傛瘮濡傦紝Qt4閲屾墍鏈夋ā寮忔劅鐭ラ」鐩殑瑙嗗浘綾伙紙model-aware item view classes錛夐兘鎷ユ湁-View鐨勫悗緙錛?a >QListView銆?a >QTableView鍜?a >QTreeView錛夛紝騫朵笖瀵瑰簲鍩轟簬欏圭洰鐨勭被閮界敤鍚庣紑-Widget浠f浛錛?a >QListWidget銆?a >QTableWidget鍜?a >QTreeWidget錛夈? 褰撳0鏄庢灇涓炬椂錛屾椂鍒昏浣忥紝鍦–++錛堜笉鍍廕ava鍜孋#錛変腑錛屼嬌鐢ㄦ灇涓懼間笉闇瑕佺被鍨嬩俊鎭備笅闈㈢殑渚嬪瓙婕旂ず浜嗙粰鏋氫婦鍊艱搗涓お榪囧父鐢ㄧ殑鍚嶅瓧鎵寮曡搗鐨勫嵄瀹籌細 鍦ㄦ渶鍚庝竴琛岋紝Insensitive鏄粈涔堟剰鎬濓紵涓涓敤浜庡懡鍚嶆灇涓懼肩殑鎸囧鎬濇兂鏄紝鍦ㄦ瘡涓灇涓懼奸噷錛岃嚦灝戦噸澶嶄竴涓灇涓劇被鍨嬪悕涓殑鍏冪礌錛? 褰撴灇涓懼煎彲浠ョ敤“鎴?#8221;榪炴帴璧鋒潵褰撲綔涓涓爣蹇楁椂錛屼紶緇熺殑鍋氭硶鏄皢“鎴?#8221;鐨勭粨鏋滀綔涓轟竴涓猧nt淇濆瓨錛岃繖涓嶆槸綾誨瀷瀹夊叏鐨勩俀t4鎻愪緵浜嗕竴涓ā鏉跨被 QFlags<T>鏉ュ疄鐜扮被鍨嬪畨鍏紝鍏朵腑T鏄釜鏋氫婦綾誨瀷銆備負浜嗘柟渚夸嬌鐢紝Qt涓哄緢澶氭爣蹇楃被鍚嶆彁渚涗簡typedef錛屾墍浠ヤ綘鍙互浣跨敤綾誨瀷 Qt::Alignment浠f浛QFlags<Qt::AlignmentFlag>銆? 涓轟簡鏂逛究錛屾垜浠粰鏋氫婦綾誨瀷鍗曟暟鐨勫悕瀛楋紙榪欐牱琛ㄧず鏋氫婦鍊間竴嬈″彧鑳芥湁涓涓爣蹇楋級錛岃?#8220;鏍囧織”鍒欎嬌鐢ㄥ鏁板悕瀛椼傛瘮濡傦細 鏈変簺鎯呭喌涓嬶紝“鏍囧織“綾諱嬌鐢ㄤ簡鍗曟暟鐨勫悕瀛椼傝繖鏃訛紝鏋氫婦綾諱嬌鐢?Flag鍋氬悗緙錛? 錛堣繖閲屼負鍟ヤ笉鏄妸”鏍囧織“綾葷敤-Flag鍋氬悗緙錛岃屾槸鎶婃灇涓懼煎仛鍚庣紑鍛紵鎰熻鏈夌偣娣鋒穯……錛? 緇欏嚱鏁板懡鍚嶇殑涓涓鍒欐槸錛屽悕瀛楄鏄庣‘浣撶幇鍑鴻繖涓嚱鏁版槸鍚︽湁鍓綔鐢ㄣ傚湪Qt3錛屽父鏁板嚱鏁?a >QString::simplifyWhiteSpace()榪濆弽浜嗚繖涓師鍒欙紝鍥犱負瀹冭繑鍥炵被涓涓?a >QString瀹炰緥錛岃屼笉鏄儚鍚嶅瓧鎵鎻愮ず鐨勯偅鏍鳳紝鏇存敼浜嗚皟鐢ㄨ繖涓嚱鏁扮殑瀹炰緥鏈韓銆傚湪Qt4錛岃繖涓嚱鏁拌閲嶅懡鍚嶄負QString::simplified()銆? 鍙傛暟鍚嶆槸紼嬪簭鍛樼殑閲嶈淇℃伅鏉ユ簮錛岃櫧鐒跺湪浣跨敤API鏃訛紝騫朵笉鐩存帴灞曠ず鍦ㄤ唬鐮侀噷銆傜敱浜庣幇浠DE鍦ㄧ▼搴忓憳鍐欎唬鐮佹椂鍙互鑷姩鏄劇ず鍙傛暟鍚嶏紙灝辨槸鑷姩鎰熺煡鎴栬呰嚜鍔ㄨˉ鍏ㄤ箣綾葷殑鍔熻兘錛夛紝鍊煎緱鑺辨椂闂寸粰澶存枃浠墮噷澹版槑鐨勫弬鏁頒竴涓悎閫傜殑鍚嶅瓧錛屽茍涓斿湪鏂囨。涓篃浣跨敤鐩稿悓鐨勫悕瀛椼? 緇欏竷灝斿睘鎬х殑璁劇疆鍑芥暟鍜屾彁鍙栧嚱鏁頒竴涓悎閫傜殑鍚嶅瓧錛屾繪槸闈炲父鐥涜嫤鐨勩傛彁鍙栧嚱鏁板簲璇ュ彨鍋歝hecked()榪樻槸isChecked()錛焥crollBarsEnabled()榪樻槸areScrollBarEnabled()? 鍦≦t4閲岋紝鎴戜滑浣跨敤涓嬪垪瑙勫垯鍛藉悕鎻愬彇鍑芥暟錛? 璁劇疆鍑芥暟鍚嶅瓧緇ф壙鑷彁鍙栧嚱鏁板悕錛屽彧鏄Щ鎺変簡鎵鏈夊墠緙錛屽茍浣跨敤set-鍋氬墠緙錛屾瘮濡傦細setDown()榪樻湁setScrollBarsEnabled()銆傚睘鎬х殑鍚嶅瓧涓庢彁鍙栧嚱鏁扮浉鍚岋紝鍙槸鍘繪帀浜嗗墠緙銆? 浼犲嚭鍙傛暟鐨勬渶浣抽夋嫨鏄粈涔堬紝鎸囬拡榪樻槸寮曠敤錛? 澶ч儴鍒咰++涔︽帹鑽愬湪鑳界敤寮曠敤鐨勫湴鏂瑰氨鐢ㄥ紩鐢紝榪欐槸鍥犱負涓鑸涓哄紩鐢ㄦ瘮鎸囬拡鏇?#8220;瀹夊叏涓斿ソ鐢?#8221;銆傜劧鑰岋紝鍦ㄥ瓚o紙Trolltech錛夛紝鎴戜滑鍊懼悜浣跨敤鎸囬拡錛屽洜涓鴻繖璁╀唬鐮佹洿鏄撹銆傛瘮杈冿細 鍙湁絎竴琛岃兘娓呮鐨勮鏄庯紝鍦ㄥ嚱鏁拌皟鐢ㄥ悗錛宧銆乻鍜寁灝嗘湁寰堝ぇ鍑犵巼琚敼鍔ㄣ? 涓轟簡灞曠ず濡備綍瀹為檯搴旂敤榪欎簺姒傚康錛屾垜浠皢瀛︿範Qt3涓殑API QProgressBar騫跺拰Qt4閲岀浉閫氱殑API鍋氭瘮杈冦傚湪Qt3閲岋細 API鐩稿綋澶嶆潅錛屼笖涓嶇粺涓銆傛瘮濡傦紝浠呬粠鍚嶅瓧reset()騫朵笉鑳界悊瑙e叾浣滅敤錛宻etTotalSteps()鍜宻etProgress()鏄揣鑰﹀悎鐨勩? 鏀硅繘API鐨勫叧閿紝鏄敞鎰忓埌QProgressBar鍜孮t4鐨?a >QAbstractSpinBox綾誨強鍏跺瓙綾?a >QSpinBox錛?a >QSlider鍜?a >QDial寰堢浉浼箋傝В鍐蟲柟娉曪紵鐢╩inimum銆乵aximum鍜寁alue浠f浛progress鍜宼otalSteps銆傚姞鍏lueChanged()淇″彿銆傚姞鍏etRange()鍑芥暟銆? 涔嬪悗瑙傚療progressString銆乸ercentage鍜宨ndicator瀹為檯閮芥寚涓涓笢瑗匡細鍦ㄨ繘搴︽潯涓婃樉紺虹殑鏂囧瓧銆備竴鑸潵璇存枃瀛楁槸鐧懼垎姣斾俊鎭紝浣嗘槸涔熷彲浠ヤ嬌鐢╯etIndicator()璁句負浠繪剰瀛楃銆備笅闈㈡槸鏂扮殑API錛? 榛樿鐨勬枃瀛椾俊鎭槸鐧懼垎姣斾俊鎭傛枃瀛椾俊鎭彲浠ヨ棄鐢遍噸鏂板疄鐜皌ext()鑰屾敼鍙樸? 鍦≦t3 API涓紝setCenterIndicator()鍜宻etIndicatorFollowStyle()鏄袱涓獎鍝嶅榻愮殑鍑芥暟銆備粬浠彲浠ユ柟渚跨殑鐢變竴涓嚱鏁板疄鐜幫紝setAlignment()錛? 濡傛灉紼嬪簭鍛樹笉璋冪敤setAlignment()錛屽榻愭柟寮忓熀浜庡綋鍓嶇殑椋庢牸銆傚浜庡熀浜嶮otif鐨勯鏍鹼紝鏂囧瓧灝嗗眳涓樉紺猴紱瀵瑰叾浠栭鏍鹼紝鏂囧瓧灝嗛潬鍦ㄥ彸杈廣? 榪欐槸鏀硅繘鍚庣殑QProgressBar API錛? API闇瑕佽川閲忎繚璇併傜涓涓慨璁㈢増涓嶅彲鑳芥槸姝g‘鐨勶紱浣犲繀欏誨仛嫻嬭瘯銆傚啓浜涚敤渚嬶細鐪嬬湅閭d簺浣跨敤浜嗚繖浜汚PI鐨勪唬鐮侊紝騫墮獙璇佷唬鐮佹槸鍚︽槗璇匯? 鍏朵粬鐨勬妧宸у寘鎷鍒殑浜哄垎鍒湪鏈夋枃妗e拰娌℃湁鏂囨。鐨勬儏鍐典笅錛屼嬌鐢ㄨ繖浜汚PI錛涙垨鑰呬負API綾誨啓鏂囨。錛堝寘鎷被鐨勬榪板拰鐙珛鐨勫嚱鏁幫級銆? 褰撲綘鍗′綇鏃訛紝鍐欐枃妗d篃鏄竴縐嶈幏寰楀ソ鍚嶅瓧鐨勬柟娉曪細浠呬粎鏄皾璇曟妸鏉$洰錛堢被錛屽嚱鏁幫紝鏋氫婦鍊鹼紝絳夌瓑鍛釜錛夊啓涓嬫潵騫朵笖浣跨敤浣犲啓鐨勭涓鍙ヨ瘽浣滀負鐏墊劅銆傚鏋滀綘涓嶈兘鎵懼埌涓涓簿紜殑鍚嶅瓧錛岃繖甯稿父璇存槑榪欎釜鏉$洰涓嶅簲璇ュ瓨鍦ㄣ傚鏋滄墍鏈夊墠闈㈢殑浜嬫儏閮藉け璐ヤ簡騫朵笖浣犵‘璁よ繖涓蹇電殑瀛樺湪錛屽彂鏄庝竴涓柊鍚嶅瓧銆傛瘯绔燂紝“widget”銆?“event”銆?#8220;focus”鍜?#8220;buddy”榪欎簺鍚嶅瓧灝辨槸榪欎箞鏉ョ殑銆?
1. shared_ptr鏈澶х殑鐗圭偣鏄帴鍙g殑綆鍗曟т笌瀹炵幇鐨勭伒媧繪с?br> 瀵逛簬shared_ptr<Object>,object鐨勫唴瀛樼鐞嗘槸鍙畾鍒剁殑錛岀敋鑷沖彲浠ュ畾鍒跺紩鐢ㄨ鏁扮粨鐐圭殑鍐呭瓨鍒嗛厤錛屼互婊¤凍瀵瑰唴瀛樻湁鐗規畩瑕佹眰鐨勬儏鍐點傝岃繖涓鍒囷紝閮借Object鐨勫疄鐜拌呴殣钘忚搗鏉ワ紝浣跨敤Object鐨勫鎴風被鏄笉鐢ㄥ叧蹇冪殑銆傝繖鍜屼互鍓嶆爣鍑嗗簱鐨勭粍浠跺疄鐜扮瓥鐣ユ湁浜涗笉鍚屻傛瘮濡傝, vector<int, A1>鍜寁ector<int, A2>錛岀敱浜庡唴瀛樺垎閰嶇瓥鐣ョ殑涓嶅悓錛岃屽彉鎴愮被鍨嬬殑涓嶅悓錛岄犳垚鎺ュ彛鐨勬敼鍙樸?/span>榪欎竴鐐瑰湪shared_ptr鐨勮璁℃椂琚伩鍏嶄簡錛屽綋鐒朵互涓瀹氱殑鎬ц兘浠d環銆俿hared_ptr浣滀負C++闈㈠悜瀵硅薄璁捐鐨勪竴涓噸瑕佺粍浠訛紝鎺ュ彛鐨勭畝鍗曟ф槸寰堥噸瑕佺殑錛屽繀欏昏鏈?/span>鎺ュ彛鍜屽疄鐜扮殑鍒嗙銆備笌姝ょ浉浼肩殑榪樻湁tr1::function鐨勮璁°?br>
2.鍦ㄥ悓涓浣撶郴涓紝鍚勭綾誨瀷鐨勬櫤鑳芥寚閽堝彲浠ヤ簰鐩歌漿鎹€?br>
濡備笅渚嬶細
MemberA memberA;
};
shared_ptr<Object> obj(new Object);
shared_ptr<InterfaceA> a = obj;
shared_ptr<InterfaceB> b = obj;
shared_ptr<Object> p = static_pointer_cast<Object>(b);
shared_ptr<void> p2 = obj;
鐢氳嚦榪樺彲浠ュ彇寰楁暟鎹垚鍛樼殑鏅鴻兘鎸囬拡錛?br>
shared_ptr<MemberA> memberA(obj, &obj->memberA);
鍐嶆潵璇磋shared_ptr鐨勭己鐐廣?br>
1.瀵逛簬浣跨敤寮曠敤璁℃暟鐨勬櫤鑳芥寚閽堟潵璇達紝蹇呴』瑕佸皬蹇冨嚭鐜板驚鐜紩鐢ㄣ?br> 鍦ㄩ噸搴︿嬌鐢?/span>shared_ptr鐨勭郴緇熶腑錛屼綘蹇呴』涓寮濮嬪氨鏄庣‘綾諱笌綾葷殑鍏崇郴錛屼互鍐沖畾鍝噷浣跨敤shared_ptr錛屽摢閲屼嬌鐢?/span>weak_ptr錛屽惁鍒欏氨浼氬嚭鐜板唴瀛樻硠闇層傝?span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: #000000; WORD-SPACING: 0px" class=Apple-style-span>shared_ptr鐨勬帴鍙?/span>杞崲鐨勭伒媧繪э紝涔熷緢瀹規槗瀵艱嚧鏅鴻兘鎸囬拡琚互鐢ㄣ?/span>鍐呭瓨鑷姩綆$悊鐨勯棶棰樺茍娌℃湁寰楀埌瑙e喅錛屽畠鍙槸琚漿縐諱簡銆?br>
2.shared_ptr浣跨敤闈炲祵鍏ュ紡璁捐錛岃繖鏍峰彲浠ヤ嬌鐢ㄤ簬鍩烘湰綾誨瀷錛屾瘮濡?shared_ptr<int>銆備絾鏄牴鎹釜浜虹粡楠岋紝榪欑鎯呭喌鍦ㄥ緢灝戜嬌鐢ㄣ傚ぇ閮ㄥ垎鎯呭喌榪樻槸浣跨敤鑷繁璁捐鐨勭被銆傝繖鏈変竴涓棶棰橈紝灝辨槸娌℃湁寰堟柟渚跨殑鍔炴硶瀹炵幇this鎸囬拡鍜?/span>鏅鴻兘鎸囬拡鐨勮漿鎹€傛爣鍑嗗簱涓彁渚涗簡enable_shared_from_this綾繪潵瑙e喅榪欎釜闂銆備絾榪?/span>宸茬粡浣挎墍璋撶殑闈炲祵鍏ュ紡璁捐寰掓湁铏氬悕銆傝屽亣濡備竴寮濮嬮噰鐢?span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: #000000; WORD-SPACING: 0px" class=Apple-style-span>宓屽叆寮忚璁$殑璇濓紝鍒欏湪鎬ц兘浠d環鍜屽綰跨▼璁捐鏂歸潰鍏鋒湁鏇村ぇ鐨勭伒媧繪с?/span>
]]>
]]>姝e垯琛ㄨ揪寮?0鍒嗛挓鍏ラ棬鏁欑▼
鐩綍
鏈枃鐩爣
濡備綍浣跨敤鏈暀紼?/h2>
姝e垯琛ㄨ揪寮忓埌搴曟槸浠涔堜笢瑗匡紵
鍏ラ棬
嫻嬭瘯姝e垯琛ㄨ揪寮?/h2>

鍏冨瓧絎?/h2>
浠g爜
璇存槑
.
鍖歸厤闄ゆ崲琛岀浠ュ鐨勪換鎰忓瓧絎?/span>
\w
鍖歸厤瀛楁瘝鎴栨暟瀛楁垨涓嬪垝綰挎垨姹夊瓧
\s
鍖歸厤浠繪剰鐨勭┖鐧界
\d
鍖歸厤鏁板瓧
\b
鍖歸厤鍗曡瘝鐨勫紑濮嬫垨緇撴潫
^
鍖歸厤瀛楃涓茬殑寮濮?/span>
$
鍖歸厤瀛楃涓茬殑緇撴潫
瀛楃杞箟
閲嶅
浠g爜/璇硶
璇存槑
*
閲嶅闆舵鎴栨洿澶氭
+
閲嶅涓嬈℃垨鏇村嬈?/span>
?
閲嶅闆舵鎴栦竴嬈?/span>
{n}
閲嶅n嬈?/span>
{n,}
閲嶅n嬈℃垨鏇村嬈?/span>
{n,m}
閲嶅n鍒癿嬈?/span>
瀛楃綾?/h2>
鍒嗘灊鏉′歡
鍒嗙粍
鍙嶄箟
浠g爜/璇硶
璇存槑
\W
鍖歸厤浠繪剰涓嶆槸瀛楁瘝錛屾暟瀛楋紝涓嬪垝綰匡紝姹夊瓧鐨勫瓧絎?/span>
\S
鍖歸厤浠繪剰涓嶆槸絀虹櫧絎︾殑瀛楃
\D
鍖歸厤浠繪剰闈炴暟瀛楃殑瀛楃
\B
鍖歸厤涓嶆槸鍗曡瘝寮澶存垨緇撴潫鐨勪綅緗?/span>
[^x]
鍖歸厤闄や簡x浠ュ鐨勪換鎰忓瓧絎?/span>
[^aeiou]
鍖歸厤闄や簡aeiou榪欏嚑涓瓧姣嶄互澶栫殑浠繪剰瀛楃
鍚庡悜寮曠敤
鍒嗙被
浠g爜/璇硶
璇存槑
鎹曡幏
(exp)
鍖歸厤exp,騫舵崟鑾鋒枃鏈埌鑷姩鍛藉悕鐨勭粍閲?/span>
(?<name>exp)
鍖歸厤exp,騫舵崟鑾鋒枃鏈埌鍚嶇О涓簄ame鐨勭粍閲岋紝涔熷彲浠ュ啓鎴??'name'exp)
(?:exp)
鍖歸厤exp,涓嶆崟鑾峰尮閰嶇殑鏂囨湰錛屼篃涓嶇粰姝ゅ垎緇勫垎閰嶇粍鍙?/span>
闆跺鏂█
(?=exp)
鍖歸厤exp鍓嶉潰鐨勪綅緗?/span>
(?<=exp)
鍖歸厤exp鍚庨潰鐨勪綅緗?/span>
(?!exp)
鍖歸厤鍚庨潰璺熺殑涓嶆槸exp鐨勪綅緗?/span>
(?<!exp)
鍖歸厤鍓嶉潰涓嶆槸exp鐨勪綅緗?/span>
娉ㄩ噴
(?#comment)
榪欑綾誨瀷鐨勫垎緇勪笉瀵規鍒欒〃杈懼紡鐨勫鐞嗕駭鐢熶換浣曞獎鍝嶏紝鐢ㄤ簬鎻愪緵娉ㄩ噴璁╀漢闃呰
闆跺鏂█
璐熷悜闆跺鏂█
娉ㄩ噴
(?<= # 鏂█瑕佸尮閰嶇殑鏂囨湰鐨勫墠緙
<(\w+)> # 鏌ユ壘灝栨嫭鍙鋒嫭璧鋒潵鐨勫瓧姣嶆垨鏁板瓧(鍗矵TML/XML鏍囩)
) # 鍓嶇紑緇撴潫
.* # 鍖歸厤浠繪剰鏂囨湰
(?= # 鏂█瑕佸尮閰嶇殑鏂囨湰鐨勫悗緙
<\/\1> # 鏌ユ壘灝栨嫭鍙鋒嫭璧鋒潵鐨勫唴瀹癸細鍓嶉潰鏄竴涓?/"錛屽悗闈㈡槸鍏堝墠鎹曡幏鐨勬爣絳?br> ) # 鍚庣紑緇撴潫璐┆涓庢噿鎯?/h2>
浠g爜/璇硶
璇存槑
*?
閲嶅浠繪剰嬈★紝浣嗗敖鍙兘灝戦噸澶?/span>
+?
閲嶅1嬈℃垨鏇村嬈★紝浣嗗敖鍙兘灝戦噸澶?/span>
??
閲嶅0嬈℃垨1嬈★紝浣嗗敖鍙兘灝戦噸澶?/span>
{n,m}?
閲嶅n鍒癿嬈★紝浣嗗敖鍙兘灝戦噸澶?/span>
{n,}?
閲嶅n嬈′互涓婏紝浣嗗敖鍙兘灝戦噸澶?/span>
澶勭悊閫夐」
鍚嶇О
璇存槑
IgnoreCase(蹇界暐澶у皬鍐?
鍖歸厤鏃朵笉鍖哄垎澶у皬鍐欍?/td>
Multiline(澶氳妯″紡)
鏇存敼^鍜?span class="code">$鐨勫惈涔夛紝浣垮畠浠垎鍒湪浠繪剰涓琛岀殑琛岄鍜岃灝懼尮閰嶏紝鑰屼笉浠呬粎鍦ㄦ暣涓瓧絎︿覆鐨勫紑澶村拰緇撳熬鍖歸厤銆?鍦ㄦ妯″紡涓?$鐨勭簿紜惈鎰忔槸:鍖歸厤\n涔嬪墠鐨勪綅緗互鍙婂瓧絎︿覆緇撴潫鍓嶇殑浣嶇疆.)
Singleline(鍗曡妯″紡)
鏇存敼.鐨勫惈涔夛紝浣垮畠涓庢瘡涓涓瓧絎﹀尮閰嶏紙鍖呮嫭鎹㈣絎n錛夈?
IgnorePatternWhitespace(蹇界暐絀虹櫧)
蹇界暐琛ㄨ揪寮忎腑鐨勯潪杞箟絀虹櫧騫跺惎鐢ㄧ敱#鏍囪鐨勬敞閲娿?/td>
RightToLeft(浠庡彸鍚戝乏鏌ユ壘)
鍖歸厤浠庡彸鍚戝乏鑰屼笉鏄粠宸﹀悜鍙寵繘琛屻?/td>
ExplicitCapture(鏄懼紡鎹曡幏)
浠呮崟鑾峰凡琚樉寮忓懡鍚嶇殑緇勩?/td>
ECMAScript(JavaScript鍏煎妯″紡)
浣胯〃杈懼紡鐨勮涓轟笌瀹冨湪JavaScript閲岀殑琛屼負涓鑷淬?/td>
騫寵 緇?閫掑綊鍖歸厤
< #鏈澶栧眰鐨勫乏鎷彿
[^<>]* #鏈澶栧眰鐨勫乏鎷彿鍚庨潰鐨勪笉鏄嫭鍙風殑鍐呭
(
(
(?'Open'<) #紕板埌浜嗗乏鎷彿錛屽湪榛戞澘涓婂啓涓涓?Open"
[^<>]* #鍖歸厤宸︽嫭鍙峰悗闈㈢殑涓嶆槸鎷彿鐨勫唴瀹?br> )+
(
(?'-Open'>) #紕板埌浜嗗彸鎷彿錛屾摝鎺変竴涓?Open"
[^<>]* #鍖歸厤鍙蟲嫭鍙峰悗闈笉鏄嫭鍙風殑鍐呭
)+
)*
(?(Open)(?!)) #鍦ㄩ亣鍒版渶澶栧眰鐨勫彸鎷彿鍓嶉潰錛屽垽鏂粦鏉夸笂榪樻湁娌℃湁娌℃摝鎺夌殑"Open"錛涘鏋滆繕鏈夛紝鍒欏尮閰嶅け璐?br>> #鏈澶栧眰鐨勫彸鎷彿榪樻湁浜涗粈涔堜笢瑗挎病鎻愬埌
浠g爜/璇硶
璇存槑
\a
鎶ヨ瀛楃(鎵撳嵃瀹冪殑鏁堟灉鏄數鑴戝榾涓澹?
\b
閫氬父鏄崟璇嶅垎鐣屼綅緗紝浣嗗鏋滃湪瀛楃綾婚噷浣跨敤浠h〃閫鏍?/span>
\t
鍒惰〃絎︼紝Tab
\r
鍥炶濺
\v
绔栧悜鍒惰〃絎?/span>
\f
鎹㈤〉絎?/span>
\n
鎹㈣絎?/span>
\e
Escape
\0nn
ASCII浠g爜涓叓榪涘埗浠g爜涓簄n鐨勫瓧絎?/span>
\xnn
ASCII浠g爜涓崄鍏繘鍒朵唬鐮佷負nn鐨勫瓧絎?/span>
\unnnn
Unicode浠g爜涓崄鍏繘鍒朵唬鐮佷負nnnn鐨勫瓧絎?/span>
\cN
ASCII鎺у埗瀛楃銆傛瘮濡俓cC浠h〃Ctrl+C
\A
瀛楃涓插紑澶?綾諱技^錛屼絾涓嶅彈澶勭悊澶氳閫夐」鐨勫獎鍝?
\Z
瀛楃涓茬粨灝炬垨琛屽熬(涓嶅彈澶勭悊澶氳閫夐」鐨勫獎鍝?
\z
瀛楃涓茬粨灝?綾諱技$錛屼絾涓嶅彈澶勭悊澶氳閫夐」鐨勫獎鍝?
\G
褰撳墠鎼滅儲鐨勫紑澶?/span>
\p{name}
Unicode涓懡鍚嶄負name鐨勫瓧絎︾被錛屼緥濡俓p{IsGreek}
(?>exp)
璐┆瀛愯〃杈懼紡
(?<x>-<y>exp)
騫寵 緇?/span>
(?im-nsx:exp)
鍦ㄥ瓙琛ㄨ揪寮廵xp涓敼鍙樺鐞嗛夐」
(?im-nsx)
涓鴻〃杈懼紡鍚庨潰鐨勯儴鍒嗘敼鍙樺鐞嗛夐」
(?(exp)yes|no)
鎶奺xp褰撲綔闆跺姝e悜鍏堣鏂█錛屽鏋滃湪榪欎釜浣嶇疆鑳藉尮閰嶏紝浣跨敤yes浣滀負姝ょ粍鐨勮〃杈懼紡錛涘惁鍒欎嬌鐢╪o
(?(exp)yes)
鍚屼笂錛屽彧鏄嬌鐢ㄧ┖琛ㄨ揪寮忎綔涓簄o
(?(name)yes|no)
濡傛灉鍛藉悕涓簄ame鐨勭粍鎹曡幏鍒頒簡鍐呭錛屼嬌鐢▂es浣滀負琛ㄨ揪寮忥紱鍚﹀垯浣跨敤no
(?(name)yes)
鍚屼笂錛屽彧鏄嬌鐢ㄧ┖琛ㄨ揪寮忎綔涓簄o
鑱旂郴浣滆?/h2>
]]>
綰湡IP鏁版嵁搴撴牸寮忚瑙?/h1>
鎽樿
緗戠粶涓婄殑IP鏁版嵁搴撲互綰湡鐗堢殑鏈涓烘祦琛岋紝LumaQQ涔熼噰鐢ㄤ簡綰湡鐗圛P鏁版嵁搴撳仛涓篒P鏌ヨ鍔熻兘鐨?
鍩虹銆備笉榪囧叧浜庡叾鏍煎紡鐨勬枃妗e嵈闈炲父涔嬪皯錛屽悗鏉ョ粓浜庡湪緗戜笂鎵懼埌浜嗕竴浠芥枃妗o紝寰椾互浜嗚В鍏跺唴騫曪紝涓嶈繃閭d喚鏂囨。瀵ュ鏁拌錛屼篃鏄涓鴻愬績鎵嶈鏄庣櫧銆傚湪榪欓噷鎴戦噸鍐欎竴
浠斤紝浠ユ鍋氫負LumaQQ寮鍙戣呮枃妗g殑涓閮ㄥ垎錛屾垜鎯寵繕鏄繀瑕佺殑銆傛湰鏂囪緇嗕粙緇嶄簡綰湡IP鏁版嵁搴撶殑鏍煎紡錛屽茍涓旂粰鍑轟簡涓浜汥emo浠ヤ緵鍙傝冦?
淇敼鏃ユ湡錛?2005/01/14
2005-01-14 淇敼浜嗗師鏉ヤ竴浜涜〃杈句笉娓呭拰閿欒鐨勫湴鏂?
鍩烘湰緇撴瀯
鍥?. QQWry.dat鏂囦歡緇撴瀯涓. 浜嗚В鏂囦歡澶?/h3>
浜? 浜嗚В璁板綍鍖?/h3>
鍥?. IP璁板綍鐨勬渶綆鍗曞艦寮?/center>
鍥?. 閲嶅畾鍚戞ā寮?
鍥?. 閲嶅畾鍚戞ā寮?
鍥?. 娣峰拰鎯呭喌1
鍥?. 娣峰拰鎯呭喌2璁捐鐨勭悊鐢?/h3>
浜嗚В绱㈠紩鍖?/h3>
鍥?. 鏂囦歡澶存寚鍚戠儲寮曞尯鍥劇ず
鍥?. 鏂囦歡璇︾粏緇撴瀯Demo
/**
* 緇欏畾涓涓猧p鍥藉鍦板尯璁板綍鐨勫亸縐伙紝榪斿洖涓涓狪PLocation緇撴瀯
* @param offset 鍥藉璁板綍鐨勮搗濮嬪亸縐?br> * @return IPLocation瀵硅薄
*/
private IPLocation getIPLocation(long offset) {
try {
// 璺寵繃4瀛楄妭ip
ipFile.seek(offset + 4);
// 璇誨彇絎竴涓瓧鑺傚垽鏂槸鍚︽爣蹇楀瓧鑺?br> byte b = ipFile.readByte();
if(b == REDIRECT_MODE_1) {
// 璇誨彇鍥藉鍋忕Щ
long countryOffset = readLong3();
// 璺寵漿鑷沖亸縐誨
ipFile.seek(countryOffset);
// 鍐嶆鏌ヤ竴嬈℃爣蹇楀瓧鑺傦紝鍥犱負榪欎釜鏃跺欒繖涓湴鏂逛粛鐒跺彲鑳芥槸涓噸瀹氬悜
b = ipFile.readByte();
if(b == REDIRECT_MODE_2) {
loc.country = readString(readLong3());
ipFile.seek(countryOffset + 4);
} else
loc.country = readString(countryOffset);
// 璇誨彇鍦板尯鏍囧織
loc.area = readArea(ipFile.getFilePointer());
} else if(b == REDIRECT_MODE_2) {
loc.country = readString(readLong3());
loc.area = readArea(offset + 8);
} else {
loc.country = readString(ipFile.getFilePointer() - 1);
loc.area = readArea(ipFile.getFilePointer());
}
return loc;
} catch (IOException e) {
return null;
}
}
/**
* 浠巓ffset鍋忕Щ寮濮嬭В鏋愬悗闈㈢殑瀛楄妭錛岃鍑轟竴涓湴鍖哄悕
* @param offset 鍦板尯璁板綍鐨勮搗濮嬪亸縐?br> * @return 鍦板尯鍚嶅瓧絎︿覆
* @throws IOException 鍦板尯鍚嶅瓧絎︿覆
*/
private String readArea(long offset) throws IOException {
ipFile.seek(offset);
byte b = ipFile.readByte();
if(b == REDIRECT_MODE_1 || b == REDIRECT_MODE_2) {
long areaOffset = readLong3(offset + 1);
if(areaOffset == 0)
return LumaQQ.getString("unknown.area");
else
return readString(areaOffset);
} else
return readString(offset);
}
/**
* 浠巓ffset浣嶇疆璇誨彇3涓瓧鑺備負涓涓猯ong錛屽洜涓簀ava涓篵ig-endian鏍煎紡錛屾墍浠ユ病鍔炴硶
* 鐢ㄤ簡榪欎箞涓涓嚱鏁版潵鍋氳漿鎹?br> * @param offset 鏁存暟鐨勮搗濮嬪亸縐?br> * @return 璇誨彇鐨刲ong鍊鹼紝榪斿洖-1琛ㄧず璇誨彇鏂囦歡澶辮觸
*/
private long readLong3(long offset) {
long ret = 0;
try {
ipFile.seek(offset);
ipFile.readFully(b3);
ret |= (b3[0] & 0xFF);
ret |= ((b3[1] << 8) & 0xFF00);
ret |= ((b3[2] << 16) & 0xFF0000);
return ret;
} catch (IOException e) {
return -1;
}
}
/**
* 浠庡綋鍓嶄綅緗鍙?涓瓧鑺傝漿鎹㈡垚long
* @return 璇誨彇鐨刲ong鍊鹼紝榪斿洖-1琛ㄧず璇誨彇鏂囦歡澶辮觸
*/
private long readLong3() {
long ret = 0;
try {
ipFile.readFully(b3);
ret |= (b3[0] & 0xFF);
ret |= ((b3[1] << 8) & 0xFF00);
ret |= ((b3[2] << 16) & 0xFF0000);
return ret;
} catch (IOException e) {
return -1;
}
}
/**
* 浠巓ffset鍋忕Щ澶勮鍙栦竴涓互0緇撴潫鐨勫瓧絎︿覆
* @param offset 瀛楃涓茶搗濮嬪亸縐?br> * @return 璇誨彇鐨勫瓧絎︿覆錛屽嚭閿欒繑鍥炵┖瀛楃涓?br> */
private String readString(long offset) {
try {
ipFile.seek(offset);
int i;
for(i = 0, buf[i] = ipFile.readByte(); buf[i] != 0; buf[++i] = ipFile.readByte());
if(i != 0)
return Utils.getString(buf, 0, i, "GBK");
} catch (IOException e) {
log.error(e.getMessage());
}
return "";
}鎬葷粨
1.鍗曞厓嫻嬭瘯搴撹灝介噺灝戝湴澧炲姞寮鍙戜漢鍛樼殑璐熸媴銆傞澶栬礋鎷呭繀欏誨敖鍙兘鐩寸櫧錛屽偦鐡滃寲銆?br>甯傞潰涓婄殑璁稿璁插埌鍗曞厓嫻嬭瘯鐨勪功閮芥槸浠Unit涓鴻摑鏈殑錛岃繖瀵艱嚧CppUnit鐨勬帴鍙楃▼搴﹂楂樸侰ppUnit涓涓煩錛屽洓騫沖叓紼籌紝浣嗕笉澶熺妧鍒┿備釜浜鴻涓篵oost.test鏈綆鍗曪紝鍙涓涓狟OOST_AUTO_TEST_CASE灝卞彲浠ュ紑濮嬩簡銆侰ppUnit鍒欒澶嶆潅涓鐐癸紝鑰岃繖縐嶅鏉傛ф槸澶氫綑鐨勶紝鐢氳嚦鏄湁瀹崇殑銆傜敤CppUnit鐨勬椂鍊欙紝鎴戠湅鍒版湁浜轟負浜嗗叡浜祴璇曚唬鐮侊紝闅忎究鍦╰est case閲岄潰鍔犲嚱鏁幫紝鐒跺悗澶嶇敤錛岀粨鏋滃鑷碿ase涓嶇嫭绔嬨俠oost.test鍊懼悜浜庝笉瑕佸緩绔?h鏂囦歡錛屾墍浠ヨ澶嶇敤涓嶆柟渚匡紙鎴栬咃紝涓嶄範鎯湪Cpp涓鐢級錛屽弽鑰屼笉瀹規槗鐘敊璇?br>2.瀹炴柦鍗曞厓嫻嬭瘯錛屽繀欏昏兘澶熻紼嬪簭鍛樼湅寰楀埌濂藉騫跺敖蹇彈鐩娿傛柊欏圭洰蹇呴』灝芥棭寮曞叆鍗曞厓嫻嬭瘯錛岃鏃╁湪姝e紡緙栫爜涔嬪墠銆?br>鎯崇珛鍒昏UT鍙樺緱瀹岀編鏄笉鍙兘鐨勶紝琛屾斂鍛戒護涔熶笉浼氭湁濂界粨鏋溿傚湪鎺ㄨ鍗曞厓嫻嬭瘯鐨勬椂鍊欙紝鏁欒偛寰堥噸瑕併傚繀欏昏鍚屼簨鑳界悊瑙e崟鍏冩祴璇曚負浠涔堟湁鏁堬紝濡備綍宸ヤ綔錛孶T緙栧啓鍑嗗垯涔嬬被鐨勯棶棰樸傚彟澶栵紝鍦ㄥ伐浣滃騫寸殑紼嬪簭鍛橈紙瀵筓T緙轟箯璁よ瘑鐨勶級涓帹琛屽崟鍏冩祴璇曪紝闃誨姏鏇村ぇ銆傛洿瑕佹敞鎰忔暀鑲插拰鍙嶉銆傛渶濂界殑鍙嶉灝辨槸甯姪浠栦滑浠庡崟鍏冩祴璇曚腑鑾風泭銆備緥濡傦紝淇敼鏇磋交鏉撅紝鎬濈淮鏇撮潰鍚戞帴鍙o紝bug鏇村皯錛屼唬鐮佹洿瀹規槗鐞嗚В絳夌瓑銆備綔涓烘帹鍔ㄨ咃紝鏈変箟鍔″幓涓誨姩鍙戠幇榪欎簺鏀瑰杽涔嬪騫剁Н鏋佸湴鍙嶉緇欑▼搴忓憳銆備粠鑰屽寮哄簲鐢║T鐨勪俊蹇冨拰鎰忔効銆?br>3.蹇呴』鍏呭垎鑷姩鍖栥?br>UT鐨勪換鍔′箣涓鏄粰浠g爜緙栫粐涓灞傜粏瀵嗙殑淇濇姢緗戙傜▼搴忓憳搴旇璁よ瘑鍒幫紝鍗曞厓嫻嬭瘯鏄負鑷繁鏈嶅姟鐨勶紝鎵浠ワ紝鎴戜滑瑕佺殑鏄畬鎴愪換鍔¤屼笉鏄睍紺恒傝兘澶熻嚜鍔ㄥ湴瀹屾垚浠誨姟鍒欐槸鏈濂界殑銆傚鏋滃崟鍏冩祴璇曡繃澶氬湴騫叉壈紼嬪簭鍛樼殑姝e父鎬濊冿紝灝變細鎷涜嚧鏇村鐨勬姷瑙︼紙鎶佃Е鎬繪槸瀛樺湪鐨勶級鎴栨暦琛嶃傛暦琛嶆槸鍙曠殑銆傛垜鍚戞潵鏄妸鍗曞厓嫻嬭瘯鐨勮繍琛屼綔涓篵uild鐨勪竴涓楠ょ殑銆傛垚鍔熺殑鍗曞厓嫻嬭瘯涓嶉渶瑕佽緭鍑轟換浣曚俊鎭紝鏈澶氬湪鍏ㄩ儴passs鐨勬椂鍊欑粰涓狾K灝辮凍澶熶簡銆傚浘褰㈢晫闈㈢殑嫻嬭瘯宸ュ叿鍦ㄦ垜鐪嬫潵涔熸槸楦¤倠錛屾柊鎵嬬殑鐜╁叿鑰屽凡銆傚浘褰㈢晫闈㈡棦涓嶅埄浜庡弬鏁板寲榪愯錛屼篃涓嶆柟渚胯嚜鍔ㄥ寲錛屽疄鍦ㄦ槸闄嶄綆寮鍙戞晥鐜囩殑鏉鎵嬨?br>4.涓嶈榪芥眰瀹岀編鐨刄T銆?br>涓嶆槸鎵鏈変笢瑗塊兘寰堝鏄撴祴璇曘俇T瑕佹眰琚祴璇曠殑涓滆タ鍙噸鐜幫紝鍙嫻嬨?鍩烘湰涓婏紝澶ч儴鍒嗙殑鐗╃悊鎿嶄綔鍥犱負緙轟箯鍙噸澶嶆ф垨鍙瀵熸э紝寰堥毦嫻嬭瘯錛屼緥濡俤atabase錛孏UI 錛堟敞鎰忥紝榪欎笉鎰忓懗鐫鍦ㄥ疄鐜頒竴涓狦UI搴撴垨db driver鏃跺氨涓嶈兘鍋歎T浜嗭級銆傚媺寮篣T鍏ㄨ鐩栵紝鏃笉鐜板疄錛屼篃涓嶅疄鎯犮傚茍涓旓紝榪欏緢鍙兘璁︰T鍙樺緱澶嶆潅錛岄珮鎴愭湰錛岃繖鏄潪甯稿嵄闄╃殑鍜屼笉鍊煎緱鐨勩傛垜鐨勪富寮犳槸錛屽緢闅炬祴錛岄偅灝變笉嫻嬶紝浣嗚姝g‘搴斿銆傛垜鐨勫仛娉曟槸灝嗛毦嫻嬬殑閮ㄥ垎闅旂鍒頒竴浜涙娊璞″眰褰撲腑鍘匯傜劧鍚庝負榪欎簺鎶借薄灞傚啓MockObject鍗沖彲嫻嬭瘯浜嗐傛垜鏇劇粡搴旂敤鍦ㄦ暟鎹簱搴旂敤涓紝騫跺緢鑷劧鐨勫緱鍒頒竴涓壇濂界殑鏁版嵁璁塊棶鐨勬娊璞″眰錛屽崟鍏冩祴璇曞氨鍙祴浜嗚繖涓娊璞″眰銆傝屽疄闄呯殑鏁版嵁搴撹闂腑鐨勭墿鐞嗘搷浣滈儴鍒嗭紝鍒欎粠鍗曞厓嫻嬭瘯涓墺紱誨嚭鍘匯傚鏋滃潥鎸佸垎紱葷墿鐞嗘搷浣滃拰閫昏緫鎿嶄綔鐨勮瘽錛岃繖涓墺紱誨嚭鍘葷殑閮ㄥ垎涓鑸緢灝忓緢鏈夐檺錛屼篃寰堝鏄撴祴璇曘傜浉鍙嶏紝濡傛灉涓嶅墺紱伙紝灝嗗鑷村崟鍏冩祴璇曠殑緇撴灉瑕佷緷璧栨暟鎹簱鐨勭姸鎬併傝繖縐嶉澶栫殑渚濊禆鎬ф病浠涔堝ソ澶勩傝繖閲岀殑鍏抽敭鏄紝蹇呴』璁╀笉鍙祴鐨勯儴鍒嗗敖鍙兘闅旂錛屽敖鍙兘灝忥紝灝藉彲鑳藉湴灝嗛昏緫鎿嶄綔浠庣墿鐞嗘搷浣滀腑鍒嗙鍑烘潵銆傝闅旂閮ㄥ垎鎵鍖呭惈鐨勯昏緫鎿嶄綔浠嶇劧闇瑕佸啓UT銆?
]]>
濂界殑API鐨勫叚涓壒鎬?/h2>
渚垮埄闄烽槺
QSlider *slider = new QSlider(12, 18, 3, 13, Qt::Vertical,
0, "volume");
QSlider *slider = new QSlider(Qt::Vertical);
slider->setRange(12, 18);
slider->setPageStep(3);
slider->setValue(13);
slider->setObjectName("volume");
甯冨皵鍙傛暟闄烽槺
widget->repaint(false);
widget->repaint();
widget->repaint(true);
widget->repaint(false);
widget->repaint();
widget->repaintWithoutErasing();
widget->setSizePolicy(QSizePolicy::Fixed,
QSizePolicy::Expanding, true);
textEdit->insert("Where's Waldo?", true, true, false);
QRegExp rx("moc_*.c??", false, true);
str.replace("%USER%", user, false); // Qt 3
str.replace("%USER%", user, Qt::CaseInsensitive); // Qt 4
闈欐佸鎬?/h2>
鍛藉悕鐨勮壓鏈?/h2>
閫氱敤鐨勫懡鍚嶈鍒?/h3>
緇欑被鍛藉悕
緇欐灇涓劇被鍨嬪強鍏跺煎懡鍚?/h3>
namespace Qt
{
enum Corner { TopLeft, BottomRight, ... };
enum CaseSensitivity { Insensitive, Sensitive };
...
};
tabWidget->setCornerWidget(widget, Qt::TopLeft);
str.indexOf("$(QTDIR)", Qt::Insensitive);
namespace Qt
{
enum Corner { TopLeftCorner, BottomRightCorner, ... };
enum CaseSensitivity { CaseInsensitive,
CaseSensitive };
...
};
tabWidget->setCornerWidget(widget, Qt::TopLeftCorner);
str.indexOf("$(QTDIR)", Qt::CaseInsensitive);
enum RectangleEdge { LeftEdge, RightEdge, ... };
typedef QFlags<RectangleEdge> RectangleEdges;
enum AlignmentFlag { AlignLeft, AlignTop, ... };
typedef QFlags<AlignmentFlag> Alignment;
緇欏嚱鏁板拰鍙傛暟鍛藉悕
緇欏竷灝斿艱緗嚱鏁幫紙Setter錛夈佹彁鍙栧嚱鏁幫紙Getter錛夊拰灞炴у懡鍚?/h3>
鍙﹀錛屽簲鐢ㄥ埌澶嶆暟鍚嶈瘝鐨勫艦瀹圭被灞炴ф病鏈夊墠緙錛?
鏈夋椂錛屾病鏈夊墠緙灝變細寮曡搗璇В錛岃繖縐嶆儏鍐典嬌鐢ㄥ墠緙is-錛?
錛堥氳繃璋冪敤dialogue()鏂規硶錛屾甯告儏鍐典笅浼氭湡鏈涜繑鍥炰竴涓?a >QDialog*鐨勫疄渚嬨傦級 鎸囬拡榪樻槸寮曠敤錛?/h2>
void getHsv(int *h, int *s, int *v) const
void getHsv(int &h, int &s, int &v) const
color.getHsv(&h, &s, &v);
color.getHsv(h, s, v);
渚嬪瓙錛歈ProgressBar
class QProgressBar : public QWidget
{
...
public:
int totalSteps() const;
int progress() const;
const QString &progressString() const;
bool percentageVisible() const;
void setPercentageVisible(bool);
void setCenterIndicator(bool on);
bool centerIndicator() const;
void setIndicatorFollowsStyle(bool);
bool indicatorFollowsStyle() const;
public slots:
void reset();
virtual void setTotalSteps(int totalSteps);
virtual void setProgress(int progress);
void setProgress(int progress, int totalSteps);
protected:
virtual bool setIndicator(QString &progressStr,
int progress,
int totalSteps);
...
};
virtual QString text() const;
void setTextVisible(bool visible);
bool isTextVisible() const;
void setAlignment(Qt::Alignment alignment);
class QProgressBar : public QWidget
{
...
public:
void setMinimum(int minimum);
int minimum() const;
void setMaximum(int maximum);
int maximum() const;
void setRange(int minimum, int maximum);
int value() const;
virtual QString text() const;
void setTextVisible(bool visible);
bool isTextVisible() const;
Qt::Alignment alignment() const;
void setAlignment(Qt::Alignment alignment);
public slots:
void reset();
void setValue(int value);
signals:
void valueChanged(int value);
...
};
濡備綍鎶夾PI璁捐濂斤紙鍘熸枃鏄疕ow to Get APIs Right錛屾垜鎬繪兂鎴怶e do APIs right……錛?/h2>
]]>
銆銆涔熷氨鏄錛岋即錛わ激涓殑嫻嬭瘯鍜屼竴鑸剰涔変笂鐨勫崟鍏冩祴璇曞茍涓嶄竴鏍鳳紝灝界錛達激錛や腑鐨勬祴璇曟湁鏃朵篃浣滀負鍗曞厓嫻嬭瘯鏉ヤ嬌鐢紝浣嗗畠浠槸涓ゅ洖浜嬨傦紙榪欓噷鐨?font style="COLOR: #000000" color=#ff0000>闇姹傦紝鎸囩殑涓嶆槸瀹㈡埛闇姹傦紝鑰屾槸紼嬪簭鍛樼殑寮鍙戦渶姹傦級銆?/font>
銆銆浣跨敤錛達激錛ゆ椂錛岄鍏堝啓鐨勬槸嫻嬭瘯錛岃繖鏃剁浉搴斾唬鐮佽繕娌℃湁瀹炵幇錛岄偅涔堟祴璇曚粈涔堜笢瑗垮憿錛熸墍浠ヨ錛屽啓嫻嬭瘯鐨勮繃紼嬶紝鍚屾椂涔熸槸璁?/span>璁℃帴鍙?/span>鐨勮繃紼嬨傝繖鍜屽啓鍗曞厓嫻嬭瘯鐨勭洰鐨勫畬鍏ㄦ槸涓嶄竴鏍風殑銆?br>銆銆錛達激錛よ繕鏈変竴涓澶栫殑濂藉銆傚ぇ澶氭暟浜洪兘鏄噿鐨勶紝涓嶈鎸囨湜鎵鏈夌殑紼嬪簭鍛樺湪鍐欏畬鍔熻兘浠g爜鍚庯紝鍐嶅幓緙栧啓鐩稿簲鐨勫崟鍏冩祴璇曘傛垜瑙夊緱榪欎釜鎺ュ彛鐨勫疄鐜版病鏈夐棶棰橈紝鎵浠ュ氨涓嶇敤嫻嬭瘯銆傝繖縐嶆兂娉曚篃寰堝父瑙併傛墍浠ヤ竴寮濮嬪氨鍐欎笅嫻嬭瘯錛屽彲浠ユ潨緇濆悗鎮c?
]]>