隨筆 - 11, 文章 - 1, 評論 - 20, 引用 - 0
          數據加載中……

          2006年8月3日

          小經驗兩則

          1.Oracle 8i 下使用最新的oracle thin driver時用DatabaseMetaData獲取主鍵等信息時,需要將
          connection.getMetaData().getPrimaryKeys(connection.getCatalog(),null,tableName);
          中的tableName轉為大寫,否則無法得到數據。

          2.正則表達式中,需要以","分割字符串,但是要分割的字串中含有","號,為了避免沖突,引入前置轉義字符"\",這樣的正則怎么寫呢?
          例如:
          String txt = "STATE_COUNTY=kj\\\\,,ADDR_LINE1=l=j,ADDR_LINE2=mj\n\n,ADDR_LINE3=n\\,o,\n\nADDR_LINE4=\np";
          需要把鍵值對切分出來:
          ?Pattern.compile("[^\\\\],)");
          這個是不行的,會將","號前一個字符消耗掉。

          ?Pattern.compile("(?![\\\\]),)");
          也不行
          Pattern?p?=?Pattern.compile,",(?![\\\\])");
          倒是可以,但是把轉義字符放后面似乎有點詭異。
          找了一個折衷辦法,不切割使用正則獲取"鍵=值"子串:
          Pattern?p?=?Pattern.compile("\\w+\\s*=.*?[,]*.*?(?=,|$)",Pattern.DOTALL);
          但是還是帶來了子串中不能含有"="的問題。
          最后查了一個JDK1.4 DOC,發現了一個反向的非匹配串寫法:
          Pattern?p?=?Pattern.compile("(?<!\\\\),\\s*");
          這樣一來就解決了以上問題。

          posted @ 2006-08-03 09:54 wolfsquare 閱讀(563) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 平和县| 襄樊市| 丹棱县| 台南县| 务川| 冷水江市| 建平县| 汝州市| 平远县| 金昌市| 泾阳县| 南郑县| 思南县| 汶川县| 永城市| 栖霞市| 招远市| 沿河| 浪卡子县| 博白县| 巴彦淖尔市| 石棉县| 清丰县| 时尚| 鹤山市| 沁水县| 修武县| 博野县| 荥阳市| 巴楚县| 即墨市| 乌鲁木齐市| 防城港市| 富川| 依兰县| 龙井市| 英山县| 鹤山市| 武胜县| 桃江县| 遂宁市|