一个杯具和一个洗具与最近学习手记

> 每天一大早,小邪就想,淫荡的一天开始了 ╮(╯▽╰)╭,果然没有超出小邪的预料,哇咔咔。
> 今天是一个淫荡的星期四。上午,小邪很开心,因为小邪的杯具送到了,很帅的杯具。

> 但是下午,小邪自己变成了杯具,o(╯□╰)o。因为小邪的弟弟有危险了 ( ⊙o⊙ )!
> 起因是 Nox619 在准备创建一个高调的神秘组织,让我们一起用力地往下面看,嘎嘎。

一. 不是一般淫荡的一:

> (= 0 =),刚才小邪在转悠,然后在 Nox 博客上面受精了,(- -+)。
> 见鬼,破输入法,不改算了,小邪都习惯了,实际上小邪想说的是受惊了。
> 让咱们继续讲这个事儿,话说 Nox 和 万戈兄 想弹小邪的鸡鸡,o(>﹏<)o。

> (- -||),杯具啊,小邪仰天长叹:“杯具啊 ~ 天大的杯具 ~ (>_<) ~”。

> Nox 扬言,如果小邪透露了他们要建立一个同志会的内幕的话,就要折磨小邪的弟弟。
> 万戈兄 说了,“我要T小邪JJ,T到他说为止,HIA~HIA~HIA”。
> 天哪,小邪要怎么办呐,谁给小邪送一个最新版的 “要你命3000”,让小邪得以继续繁衍。

> 啊哦,貌似刚刚小邪心中为自己的弟弟在担忧,结果不小心手一抖,多打了几个字。
> 大家无视他们就好了。你没看见,你没看见,你一定没看见,对吧对吧。

> 小邪手又开始抖了,心中充满鸟恐惧 ( ⊙o⊙ )。光明在哪儿,啊,小邪的眼前一片漆黑。
> 对了,这个组织和最近的活动有关,域名也和最近的活动有关,看看谁能猜到喔 O(∩_∩)O。

> 原文章围观传送门 - http://imn.im/20100106225707.html

二. 小邪的杯具:

> 话说,上次小邪参加了河蟹娱乐主办的迎圣诞免运费盖楼送杯具活动,O(∩_∩)O。
> 结果灰常幸运地得到了奖励,小邪很喜欢呢 (*^__^*),谢谢 兽兽 和 胡戈戈。

> 杯子很快地送到了呢,貌似还不错的,虽然黑色有点偏青,不过也好看的。
> 小邪的相机现在不在身边,呵呵,只好把这张图片贴出来:“哥喝的不是水,是寂寞”。

三. 正则式的特殊语法:

> 下面的内容送给 Alswl 小盆友,有兴趣的童鞋就一起看看吧。

> 正则式里面也提供了很多的特殊语法,这里普遍被大家称为分组语法。
> 关于支持性的问题,小邪查了一些资料,据说 (?!exp) 是和PHP兼容性最好的。

1
2
3
4
5
6
7
8
9
10
11
12
13
捕获:
(exp) - 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) - 匹配exp,并捕获文本到名称为name的组里,也可以写成 (?'name'exp)
(?:exp) - 匹配exp,不捕获匹配的文本,也不给此分组分配组号
 
零宽断言:
(?=exp) - 匹配exp前面的位置
(?<=exp) - 匹配exp后面的位置
(?!exp) - 匹配后面跟的不是exp的位置
(?<!exp) - 匹配前面不是exp的位置
 
注释:
(?#comment) - 这种类型的分组不对正则表达式的处理产生任何影响

四. 正则式的零宽断言:

> 呵呵,话说对于 “断言” 这个词语的解释是 - 这个位置应该满足一定的条件。
> Alswl 问小邪了一个问题,是关于多重条件的匹配问题,如图。

> 我们要使用的是(?!exp),即让正则匹配出后面跟的不是 exp 的位置。
> 这里的 $test 数组提供的是一系列条件,Akswl 要小邪这样子。

> 1. 匹配一段长度为 13 的字符串。
> 2. 字符串中有连续的 8 个数字。
> 3. 字符串中其他 5 个字符是任意的。

> Update at 2010.01.08 -
> 杯具,小邪昨天犯错误了,更新一下解法,灰常感谢柳城为小邪指出错误。

1
$regex = '/^(?!(.*?\d){9,})(?!(.*?\D){6,}).{13}$/';

> 小邪是这个样子解答的,首先两边的斜杠是 Perl 正则式的要求。
> 然后两边的 ^ 和 $ 用来表示对应的是字符串的开始和结束。
> 接着 .{13},. 表示除了换行以外的所有字符,13 规定了匹配长度。

> 我们这里前面用了两次零宽断言,第一次,(?!exp) 这里的 exp 是 (.*?\d){9,}。
> 表示数字的个数大于等于 9,零宽断言把它反过来就是数字的个数小于 9。
> 第二次 exp 是 (.*?\D){6,} 表示非数字大于等于 6 个以上。
> 即表示非数字的个数大于等于 6,把它反过来就是非数字的个数小于 6。

> 而这里 .* 表示 ?\d 和 ?\D 的前面可能有零次或更多次的其他字符。
> 而这里的 ? 表示这段连续的字符会重复零次或一次。

> 下面是这个测试程序的源代码,可以拿去运行看看,嘎嘎。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$test[0] = 'asss13336644ss'; $test[1] = 'aas15151515ss';
$test[2] = 'aa15151515sss'; $test[3] = 'aa15151515ss1';
$test[4] = 'aa15151515ss11';$test[5] = 'aa151515151ss';
$test[6] = 'aa15151511ssss';
$regex = '/^(?!(.*?\d){9,})(?!(.*?\D){6,}).{13}$/';
foreach ($test as $val) {//
	preg_match($regex,$val,$result);
	print_r($result);
	echo "<br/>\r\n";
}
// 运行上面的代码就会出现以下结果 -
// Array ( ) 
// Array ( [0] => aas15151515ss ) 
// Array ( [0] => aa15151515sss ) 
// Array ( ) 
// Array ( ) 
// Array ( ) 
// Array ( ) 
?>

五. 以下是小邪昨天犯的错误(Update at 2010.01.08)

1
$regex = '/^(?!\d{8,})(?!\D{5,}).{13}$/';

> 小邪是这个样子解答的,首先两边的斜杠是 Perl 正则式的要求。
> 然后两边的 ^ 和 $ 用来表示对应的是字符串的开始和结束。
> 接着 .{13},. 表示除了换行以外的所有字符,13 规定了匹配长度。

> 我们这里前面用了两次零宽断言,第一次,(?!exp) 这里的 exp 是 \d{8,}。
> 表示数字的数目在 8 个以上,第二次 exp 是 \D{5,} 表示非数字有5个以上。

> 因为零宽断言是让正则匹配出后面跟的不是 exp 的位置。
> 所以我们匹配到的是数字不在 8 个以上,数字小于等于 8 的字符串。
> 同时非数字小于等于 5 的字符串,最后在右边用 13 来确定整段的长度即可。

> 下面是这个测试程序的源代码,可以拿去运行看看,呵呵。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$test[0] = 'asss13336644ss'; $test[1] = 'aas15151515ss';
$test[2] = 'aa15151515sss'; $test[3] = 'aa15151515ss1';
$test[4] = 'aa15151515ss11';
$regex = '/^(?!\d{8,})(?!\D{5,}).{13}$/';
foreach ($test as $val) {
	preg_match($regex,$val,$result);
	print_r($result);
	echo "<br/>\r\n";
}
// 运行上面的代码就会出现以下结果 -
// Array ( ) Array ( [0] => aas15151515ss ) 
// Array ( [0] => aa15151515sss ) Array ( [0] => aa15151515ss1 ) 
// Array ( ) 
?>
Leave a comment

138 Comments.

  1. M 坐沙发!#1

    嘿嘿,第一次了就把你们家沙发搬走了,真不好意思,再买一个吧 :cool:

  2. alswl 坐板凳!#2

    - -#
     ~
    地板咯~
    万分感谢热情的小邪。。。

  3. 万戈 躺地板!#3

    哼哼,自觉点,把我要的东东交出来让我T,我T呀T :cool:

    • @万戈 , = =,您老到底要小邪的弟弟还是还是内幕 ~
      ╮(╯▽╰)╭ ~
      怎么小邪老觉得你对内幕的兴趣相对比较小 ~
      顿时脊背发凉,冷汗犹如黄河之水滔滔不绝 ~ :exclaim:

    • @万戈 , = =,今天小小邪怎么会这么惨 ~
      一大早被人弹,下午被人围观,晚上619又要捏 ~
      天可怜见 ~!天可怜见呐 ~!
      万戈兄相信你能猜到域名的 ~
      最多只能透露个.com,再多说,619要踩小小邪了 ~ ╮(╯▽╰)╭

  4. 蓝冰 天花板!#4

    你要变餐具了。

  5. fatkun 下水道!#5

    灌水组织~~?

  6. 哈哈,太有意思了,小X就等着大家折磨吧

  7. 知道不,我看这篇文章,滚动条上上下下拉了不下5回,才看懂文章的主题,唉,Sawyer是老咯...

  8. 准备成立个茶几组织,把杯具洗具都丢进去~

  9. 那天天都是寂寞了~~~ :evil: :evil: :evil:

  10. 那只杯我是不敢拿来喝水了。。。

  11. 想要那个杯具...

  12. 呵呵,我也想加入这个神秘组织....

  13. :lol: 小邪我发生洗具了,我写的推文中了225美刀 :mad:

  14. 小弟弟,高潮,受精了,怎么尽是些让人想入非非的词语..

  15. 莫非要搞的瑟情网站了,搞那么神秘。

  16. 一帮,忒YD了,观望小邪JJ中…… :mrgreen:

  17. 甚是把我笑趴了。

  18. 这次我是真的学习了,绝不是拿“学习了”这三个字来灌水的,我今天在这里学习了第四部分的内容。要说前面的日志那是真看不懂...... :mad:

  19. 同志会这个名字真是瘆人,是不是异性恋的还不能参加了 :razz:

  20. 一看信息都在,我就知道我曾经来过.

  21. 还是对最下面的感兴趣,小邪 :wink:

  22. 炒作,纯粹的炒作!
    这么一来,小邪弟弟火了 ..

  23. 咔咔 这几天 Kaisir 要面临专升本考试了 可能没时间来踩了 见谅见谅哈~~ :smile:

  24. 我的沙发,我的板凳,我的。。算了,这次先让你们了。
    小邪邪,嘿嘿嘿嘿嘿嘿嘿,先自己练习下弹JJ。。。免得你受不了。哇哈哈。 :mrgreen:

  25. 戈戈的寂寞杯子有创意呵呵~

  26. 前面都没看明白..

    看到正则, 强大!! 貌似你的解答也不算太对啊, 例如: 15151515aass1

    这问题真麻烦... 分两步就算了吧

    length = 13
    /\d{8,}/

    :razz:

    • @柳城 , 我没弄错呀 ~
      > 1. 匹配一段长度为 13 的字符串。
      > 2. 字符串中有连续的 8 个数字。
      > 3. 字符串中其他 5 个字符是任意的。
      其他5个字符是任意的呀 ~

    • @柳城 , 汗 ~ 貌似有点问题 ~ 杯具了 ~ 哎呀呀呀呀呀 ~!

    • @柳城 , 呼,这下子总该对了,虽然小邪弄得连自己的糊涂了 ~ 麻烦帮忙看看 ~ 谢谢喔 ~

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      
      <?php
      $test[0] = 'asss13336644ss'; $test[1] = 'aas15151515ss';
      $test[2] = 'aa15151515sss'; $test[3] = 'aa15151515ss1';
      $test[4] = 'aa15151515ss11';$test[5] = 'aa151515151ss';
      $test[6] = 'aa15151511ssss';
      $regex = '/^(?!(.*?\d){9,})(?!(.*?\D){6,}).{13}$/';
      foreach ($test as $val) {//
      	preg_match($regex,$val,$result);
      	print_r($result);
      	echo "<br/>\r\n";
      }
      // 运行上面的代码就会出现以下结果 -
      // Array ( ) 
      // Array ( [0] => aas15151515ss ) 
      // Array ( [0] => aa15151515sss ) 
      // Array ( ) 
      // Array ( ) 
      // Array ( ) 
      // Array ( ) 
      ?>
      • @邪 罗刹,
        更加不对了.. 哈哈.... 例如: 15151515aass1 和 aass115151515
        你都只考虑把8个数字放在中间.. 放在两边也有可能的啊 :wink:

    • @柳城 , 谢谢喔 ~
      P.s.
      现在有种非常强烈的想把鼠标吞下去的冲动 ~ :confused:

  27. 他那个产品其实不杂好

  28. 零下12度。每次去打开都要等半天,(点击相关文章没反应)每天总有碰到这样的站点。。。。哈哈

    • @笨笨 , 囧,你说的相关文章意思是点击标题吧?
      他那个模板最杯具的地方就标题居然没有加链接 ~
      只能点击 阅读全文或评论 ~

  29. 嘿嘿,好邪恶

  30. 所以这样我都不太想去。。。每次去都这样,那博主如果能更换一下模板的话我会像来贵博一样的勤快。每天都来。

    在我博客留言评论的xdjm 我几乎每天都去一趟。

  31. 跟往常一样打开自己的网站 发现它又死了 :cry:

  32. 晕,看完前几段就觉得博主强悍的一踏糊涂!

  33. 小邪把JJ交出来,给我T一T!!哈哈 :mrgreen: :mrgreen:
    话说这个正则你想用在什么方面? :confused:

  34. 那杯子有个性,哈哈,

  35. 你的文章可真长,杯具。

  36. 我一看见你的文章开头,我就想起有一次我和兄弟们去吃火锅,结果附近桌子一直在滑酒拳:
    “谁YD啊谁YD,你YD啊你YD(循环)”
    ………………爆肝。 :mad:

  37. 你用了头像缓存了是吗?我竟然看不到我的新头。 :lol:

  38. 果然是杯具.

  39. 原来小邪说的是这个。。哈哈。。

  40. 这杯子也继承了,哥什么不是什么,是什么的。

    哎,这天下太乱了。

  41. :sad: 告诉我内幕!!!!!!!!!!!!!!!!

  42. JJ真的杯具了! :rolleyes:

  43. 我又来了
    研究了一下午,终于明白了
    又复习了一下正则,学习了零宽断言

  44. 呃··好有个性的杯具··· :evil: 那杯具放公司茶水间里估计能雷倒一片,囧死一堆

  45. 呵呵。可爱!

  46. 第一次来,留个脚印。 :wink:

  47. 万老水很邪恶啊,话说到底是什么组织呢?

  48. 这个篇日志很凌乱,看的我头都大了,不知道说的是什么。

  49. 那杯子有意思。。

  50. 过来看一看,嘿嘿。 杯具洗具,一定要看www.beijuxiju.com~ :wink:

Leave a Reply

:evil: :razz: :wink: :rolleyes: :redface: :cry: :biggrin: :lol: :idea: :mrgreen: :mad: :exclaim: more »

[ Ctrl + Enter ]

Trackbacks and Pingbacks: