隨筆 - 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 閱讀(557) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 微山县| 太白县| 富平县| 闸北区| 文山县| 普宁市| 定兴县| 正镶白旗| 栖霞市| 柳州市| 汉寿县| 抚州市| 桃江县| 巨野县| 济源市| 南城县| 临猗县| 遵义县| 中阳县| 赫章县| 嘉善县| 囊谦县| 文登市| 陕西省| 东阳市| 封开县| 玛曲县| 平湖市| 上虞市| 象州县| 深水埗区| 呈贡县| 仲巴县| 祥云县| 科尔| 措勤县| 湾仔区| 稻城县| 富顺县| 大姚县| 上虞市|