欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Jakarta ORO

星期三, 和 BEA 新加坡來(lái)的顧問(wèn)工程師開(kāi)會(huì ), 為了我們這次的 EIP 產(chǎn)品開(kāi)發(fā)討論了有關(guān)一些 Weblogic Portal Server 的架構規劃等技術(shù)問(wèn)題, 他們的專(zhuān)業(yè)技術(shù)果然不錯, 對于自家產(chǎn)品的熟悉度與自信, 讓我肅然起敬, 并且臺灣區的張小姐, 對于系統整合廠(chǎng)商要求, 包括 Architecture, Coding 都有一番的期許, 讓我感受到國際企業(yè)的每一份子, 盡心盡力為公司打拼的努力.

也許給臺灣各個(gè)企業(yè)一個(gè)建議, 我常常聽(tīng)到信息廠(chǎng)商里面的工程師, 都在抱怨自家產(chǎn)品的成熟度不足, 或者軟件工程的不完整, 造成了業(yè)務(wù)推銷(xiāo)都是靠關(guān)系, 攀交情, 并不是賣(mài)一套真正不錯的產(chǎn)品或制作好的專(zhuān)案. 我想這就是自我要求與期許不夠, 也是讓 Microsfot 可以在臺灣大行其道的原因吧.

看到版上有人寫(xiě)到去面試時(shí), 面試主管嘲笑著(zhù):"Java 只是學(xué)校教學(xué)用途, 在外面頂多用在 PDA 和手機上." ...... :D 我笑了, 還好他們不要 JAVA 的人才, 在美國西岸, 只要敢在履歷上寫(xiě) JAVA 四個(gè)字的, 年薪至少 7 萬(wàn)美元. 我不知道, 臺灣廠(chǎng)商為何執著(zhù)于 M$, 還好我能說(shuō)出優(yōu)點(diǎn)與缺點(diǎn), 讓客戶(hù)自己去評估與比較. 就未來(lái)的趨勢來(lái)看 Java 不論在 Server 端與 Client 端的應用將會(huì )更普及, 沒(méi)有遠見(jiàn)的廠(chǎng)商, 你們等著(zhù)被我們消滅吧 ~~~~~


本期說(shuō)的是 jakarta oro , 這個(gè)項目做出來(lái)的 jakarta-oro.jar , 常常放在各式各樣的項目開(kāi)發(fā)之中, 包括 taglibs, velocity 等等, struts 和 tapestry 也有擺著(zhù)他, 他到底是干麻的, 就讓我們來(lái)研究一下 !


ps:如果要贊助本電子報發(fā)行, 請與我們聯(lián)絡(luò )->Johnny
本周主題 -- Jakarta oro



SECTION 00 ORO 的典故

Jakarta ORO 所提供的是一組 Java classes , 包括 Perl5 兼容的 reqular expression, AWK-相似 的 reqular expression, glob expressions, 及一些工具, 讓開(kāi)發(fā)人員方便去替換, 切割, 過(guò)濾一些字串. 就是 ORO 所出的 OROMatcher, AwkTools, PerlTools, and TextTools 的繼承產(chǎn)品 !

這些產(chǎn)品原本是 ORO 公司所研發(fā)的, 1998 年中他們解散了, 但是 ORO 這個(gè)名字納入了 savarese.org , 讓他不再是商業(yè)化的產(chǎn)品, 并且 Daniel Savarese ( 又是一個(gè)天才 ) 讓這個(gè) oro 延續下來(lái), 讓他成為 Opensource. 在 2000 的六月, OROMatcher 2.0, PerlTools 2.0, 還有較早版本的 AwkTools 及 TextTools 捐贈給 Jakarta Project , ORO 除了 jakarta-oro 之外還有 NetComponents 成為了 Jakarta Commons Net. 其實(shí)是一家了不起的公司, 造福了許多 Java 的開(kāi)發(fā)人員


SECTION 01 Regular Expression

很多程序都支持 Regular Expression , 包括 Perl, PHP, Python, JavaScript, and JScript, 現在也很多編輯器是使用 Regular Expression 來(lái)做有效的搜速與替換的功能. 接下來(lái), 我會(huì )說(shuō)明 什么是 regular expression. JDK 1.4 也已經(jīng)加入 java.util.regex.*, 代表 Regular Expression 的重要性越來(lái)越大.


Simple:是不用區分大小寫(xiě)的和出現位置的
  • RE: soft
  • Match: Softleader, software, Javasoft, Microsoft, i2software
The period notation :用 "." 來(lái)替換一個(gè)字符
  • RE: s.o
  • Match: sso, soo, sto, s#o, s o
The bracket notation :用 "[]" 來(lái)限制替換的字符集來(lái)取代一個(gè)字符
  • RE: s[aeio]o
  • Match: sao, seo, sio, soo
The OR operator :用 "()" 來(lái)限制替換的字符集來(lái)取代數個(gè)字符, 用 "|" 分隔.
  • RE: s(aa|i|o)o
  • Match: saao, sio, soo
The quantifier notations : 用以下的方式限定出現的字符次數,"*":0 到多, "+": 1到多, "?": 0 到 1, "{n}":n個(gè), "{n,m}": n到m個(gè).
    電話(huà):99-99999999
  • RE: [0-9]{2}\-[0-9]{8}
  • Match: 02-89519456 , 02-89519554
    電話(huà):99-99999999 或 9999999999
  • RE: [0-9]{2}\-?[0-9]{8}
  • Match: 02-89519456 , 02-89519554 , 0289519999
    身份證字號: A999999999
  • RE: [A-Z]{1}[0-9]{9}
  • Match: A111111111, B123456789, Z987654321
The NOT notation :用 "^" 來(lái)禁止替換的字符來(lái)取代某個(gè)字符
  • RE: [^B]1
  • Match: A1
  • Not Match: A2,B1,B2
The parentheses and space notations :用 "\s" 來(lái)設置空白字符
    美國表示日期格式
  • RE: [a-z]+\s+[0-9]{1,2},\s*[0-9]{4}
  • Match: June 20, 2003
Other miscellaneous notations : 特殊的替換符號定義, 為了方便使用.
  • \d [0-9]
  • \D [^0-9]
  • \w [A-Z0-9]
  • \W [^A-Z0-9]
  • \s [ \t\n\r\f]
  • \S [^ \t\n\r\f]



SECTION 02 Jakarta-ORO

我只是簡(jiǎn)略地列出常用的狀態(tài), 有興趣的可以到 google 查詢(xún) Regular Expression Tutorial, 應該可以查到很多資料讓你參考研究.


ORO 也提供了測試的 Applet 讓你思考是否要抓取出 Match 的資料.

至于這個(gè) Applet 的 source 放在 /src/java/examples/MatcherDemoApplet.java
我們拿這個(gè)例子來(lái)說(shuō)明
                                public void search(){                                int matchNum, group, caseMask, exprChoice, search;                                String text;                                MatchResult result;                                Pattern pattern;                                PatternMatcherInput input;                                resultArea.setText("");                                text       = expressionField.getText();                                exprChoice = expressionChoice.getSelectedIndex();                                caseMask   = CASE_MASK[exprChoice][caseChoice.getSelectedIndex()];                                resultArea.appendText("Compiling regular expression.\n");                                try {                                pattern = compiler[exprChoice].compile(text, caseMask);                                } catch(MalformedPatternException e){                                resultArea.appendText("\nMalformed Regular Expression:\n" +                                e.getMessage());                                return;                                }                                search   = searchChoice.getSelectedIndex();                                text     = inputArea.getText();                                matchNum = 0;                                resultArea.appendText("\nSearching\n\n");                                if(search == MATCHES_SEARCH) {                                if(matcher[exprChoice].matches(text, pattern))                                resultArea.appendText("The input IS an EXACT match.\n");                                else                                resultArea.appendText("The input IS NOT an EXACT match.\n");                                } else {                                input    = new PatternMatcherInput(text);                                while(matcher[exprChoice].contains(input, pattern)) {                                int groups;                                result = matcher[exprChoice].getMatch();                                ++matchNum;                                resultArea.appendText("Match " + matchNum + ": " +                                result.group(0)+ "\n");                                groups = result.groups();                                if(groups > 1){                                resultArea.appendText("    Subgroups:\n");                                for(group=1; group < groups; group++){                                resultArea.appendText("    " + group + ": " +                                result.group(group) + "\n");                                }                                }                                }                                resultArea.appendText("\nThe input contained " + matchNum + " matches.");                                }                                }                                
基本上是先產(chǎn)生一個(gè) compiler, 接著(zhù)設置 pattern, 最后使用 Matcher 來(lái)過(guò)濾


SECTION 03 后記

jakarta-oro 可以利用在很多地方, 包括上周介紹的 HTML Parsing 判斷, Logging 的解析, 只要有規則的字串或文章, 我們都可以利用之來(lái)得到需要的資料.
    Log 的范例 From Javaworld
  • LOG:"172.26.155.241 - - [26/Feb/2001:10:56:03 -0500] \"GET /IsAlive.htm HTTP/1.0\" 200 15 ";
  • REG:"([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3})\\s-\\s-\\s\\[([^\\]]+)\\]";


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
用VBA統計字符串中的中文字個(gè)數 - zhuyiwen - 博客園
Java正則表達式詳解
Matchmaking with regular expressions
【新提醒】struts2 jar包說(shuō)明(轉)
Java 正則表達式詳解
Python正則表達式及pythonre.compile(?P<name>)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久