小经验两则

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";
需要把键值对切分出来:
None.gif Pattern.compile("[^\\\\],)");
这个是不行的,会将","号前一个字符消耗掉。

None.gif Pattern.compile("(?![\\\\]),)");
也不行
None.gifPattern p = Pattern.compile,",(?![\\\\])");
倒是可以,但是把转义字符放后面似乎有点诡异。
找了一个折衷办法,不切割使用正则获取"键=值"子串:
None.gifPattern p = Pattern.compile("\\w+\\s*=.*?[,]*.*?(?=,|$)",Pattern.DOTALL);
但是还是带来了子串中不能含有"="的问题。
最后查了一个JDK1.4 DOC,发现了一个反向的非匹配串写法:
None.gifPattern p = Pattern.compile("(?<!\\\\),\\s*");
这样一来就解决了以上问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值