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