Re: [问题] 怎么取得/ 之间的字串

楼主: godspeedlee (妳,我可以)   2011-06-25 17:00:35
※ 引述《knives ()》之铭言:
: 我有一个字串
: http://www.tudou.com/programs/view/Bic3TWWQrRY/
: 我想要取得最后一个Bic3TWWQrRY
: 我的想法是 /\/[\w+]*\//
: 可是最后会取到/Bic3TWWQrRY/
: 要怎么把左右两个/拿掉阿
: 谢谢回答
用 RegexBuddy 测试过 ok
http://\w+(?:\.[-\w]+)*/(?:\w+/)+(\w+)/
稍微说明一下:
前面两个 (?:...) 是告诉 regex engine 这只是分组用的,
不需要储存(capture),真正会储存的只有最后一个括号。
第二个 (?:...) 会一路把所有的 path 吃完,但是因为碰到
(\w+)/ 所以会逐步交还字符直到比对成功
这个 pattern 是随手写的,辨识 url 的范例很多,不想
花时间研究就去抄 Regular Expression Cookbook 就好了
作者: PurpleCrow (17868)   2011-06-25 22:28:00
如果只为了取Bic3TWWQrRY,为什么不用(\w+)/$还可以在缩短一点http://(?:[.\w]+/)+(\w+)
楼主: godspeedlee (妳,我可以)   2011-06-26 00:07:00
如果“只有一个字串”那(\w+)/$的确是最佳解另外,个人比较偏好精确一点的比对方式
作者: PurpleCrow (17868)   2011-06-26 06:16:00
看不出原po有说是多个字串看不出哪里比较精确,只是多浪费比对步骤罢了我有一个字串...我想要取得最后一个Bic3TWWQrRY阁下似乎能先看清楚题意会比较好http://\w+(?:\.[-\w]+)*/http://www.tudou.com/http://(?:[.\w]+/)就可以符合,完全是多余或是可以的话,请你提供你我的式子用RegexBuddy比对结果会不一样的字串,看看是否有把式子复杂化的必要
楼主: godspeedlee (妳,我可以)   2011-06-26 15:04:00
已经讲过这是"个人偏好"要选择哪一种作法是原po的自由我只是提供一种解答,无意在此题上争辩
作者: PurpleCrow (17868)   2011-06-26 15:35:00
因为你的说法好像除了你的比对式,其他人都是较不精确的不过连.tudou.com都要特别写一个不获取的比对式,不仅复杂易错,初学者看到只会却步.要精确,以下最精确http://www.tudou.com/programs/view/(\w+)/只要能正确match目标字串的比对式就是精确的.而且比对式愈短愈好,这不就是Regex的目的?
楼主: godspeedlee (妳,我可以)   2011-06-26 15:36:00
抱歉我的推文让您这样解读,的确是我用词不当让您受到刺激的确您的写法初学者比较容易上手以前我也是这么写的
作者: PurpleCrow (17868)   2011-06-26 15:53:00
所以你现在的意思是你会初学者较不懂的(?:pattern)很厉害就是了?我的确受到了刺激,一个简单的匹配,居然可以把式子写得那么冗长.那么如果是多个字串我想式子应该会长到爆吧.
楼主: godspeedlee (妳,我可以)   2011-06-26 16:01:00
哈哈哈,被您说中了
作者: PurpleCrow (17868)   2011-06-26 16:05:00
教你一个式子 (\w+)/(?!\w) 用RegexBuddy测试看看吧Regex要像你这样用的话,劝你真的直接把目标字串以外http://www.tudou.com/programs/view/全都直接比对,比较不会出错
楼主: godspeedlee (妳,我可以)   2011-06-27 00:46:00
啊,慢者,我有另外一个想法,不晓得对不对。假如我错的话,希望你纠正我,让我们来共同看看这件事假如原po要的是Bic3TWWQrRY,那直接搜寻"Bic3TWWQrRY"不是更快吗?连regex都省了
作者: PurpleCrow (17868)   2011-06-27 08:55:00
那你应该去问原po阿,或许真的如你说的那样就可惜了可以卖弄把简单复杂化的机会土豆网的下载点脚本我也有在用,我通常都是要下载复数个原po只需要下载一个的机率不大网页中要取得载点的资讯所需字串通常要复数个匹配真希望见识见识以你的方式一个式子去匹配看看呢 ^_^喔 题外话 我跟我的同好都是在比式子愈精简愈好如果比对式跟原字串差不多长是会被笑话的无意冒犯 请见谅
楼主: godspeedlee (妳,我可以)   2011-06-28 01:00:00
不知道这样讲对不对,老外的书都写的挺长的呢也许您可以发个信与这些老外交流一下国内同好跟国外同好交流一下不知道您意下如何呢?
作者: PurpleCrow (17868)   2011-06-28 08:37:00
恩 国要的月亮比较圆 老外的屁都是香的不知道这样讲对不对?外简单的说 就是想卖弄嘛 不知道这样讲对不对?如果老外的式子都要写得又臭又长才能匹配目标字串恕小弟我没兴趣交流,小弟的同好更不用说了我还是习惯用不精确却可以正确匹配目标字串的简短式子不知道您觉得这样可不可以呢?喔 不精确却可以正确匹配目标字串 这句好矛盾 请无视之
作者: badwork (我是大笨蛋)   2011-06-28 22:57:00
偏离主题啦...

Links booklink

Contact Us: admin [ a t ] ucptt.com