url获取参数的正则表达式

1 如果X参数值为纯数字

(?:^|\?|&)X=(\d*)(?:&|$)

?:的作用:只匹配不捕获结果,即不返回值,不占空间,是这意思不?

^即开头字符,代表X=之前没别的字符

|是或者的意思

\?即?字符本身

&即&字符本身

X=前面的这些正则的意思即是X=前面没有任何字符或者有一个?或者&

即URL前半部分格式为 X=或者http://aaaaa?X=或者http://aaaaa?M=&X=

(\d*)即为数字任意次,也就是X这个参数的值是纯数字的时候能这么写

最后就是结果X=后边跟着&开头的其他参数,或者就是url的结尾了

2 如果X参数值不是纯数字

(.*)?X=([^&]*)

问号的意思是非贪婪匹配,即遇到X=就不在匹配任意字符了

后半部分因为参数后面还会带其它参数所以可能会有&跟着,也可能是最后一个参数,取X值时不能把后面的值取了

3 使用建表语句,在创建表结束后发现字段分隔的又有问题,把时间中的+0800切成一个字段了,最后一个字段就被排挤出去了
  找了很久,终于找到原因,'quote.delim'='("|\\[|\\])'不能写成'quote.delim'='("|\[|\])'
否则原本解析成这样的
223.198.228.244 NULL    NULL    24/Feb/2013:22:00:54 +0800      POST /account/page.do HTTP/1.1  200     52      http://×××/index.html   Mozilla/5.0
223.198.228.244 NULL    NULL    24/Feb/2013:22:00:56 +0800      GET /logout.do HTTP/1.1 302     NULL    http://×××/common/timeout.html  Mozilla/5.0
会变成这样
223.198.228.244 NULL    NULL    [24/Feb/2013:22:00:54   +0800]  NULL    200     52      http://×××/index.html
223.198.228.244 NULL    NULL    [24/Feb/2013:22:00:56   +0800]  NULL    302     NULL    http://×××/common/timeout.html
造成此问题本质原因在于:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值