Re: [問題] 怎麼取得/ 之間的字串

看板RegExp (正規表示式 Regular Expression)作者 (我是好人,也是個壞人)時間13年前 (2011/06/25 17:00), 編輯推噓1(1060)
留言61則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《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 就好了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.124.102.177

06/25 22:28, , 1F
如果只為了取Bic3TWWQrRY,為什麼不用(\w+)/$
06/25 22:28, 1F

06/25 22:40, , 2F
還可以在縮短一點http://(?:[.\w]+/)+(\w+)
06/25 22:40, 2F

06/26 00:07, , 3F
如果「只有一個字串」那(\w+)/$的確是最佳解
06/26 00:07, 3F

06/26 00:08, , 4F
另外,個人比較偏好精確一點的比對方式
06/26 00:08, 4F

06/26 06:16, , 5F
看不出原po有說是多個字串
06/26 06:16, 5F

06/26 06:17, , 6F
看不出哪裡比較精確,只是多浪費比對步驟罷了
06/26 06:17, 6F

06/26 06:24, , 7F
我有一個字串...我想要取得最後一個Bic3TWWQrRY
06/26 06:24, 7F

06/26 06:26, , 8F
閣下似乎能先看清楚題意會比較好
06/26 06:26, 8F

06/26 06:44, , 9F

06/26 06:47, , 10F
http://(?:[.\w]+/)就可以符合,完全是多餘
06/26 06:47, 10F

06/26 06:50, , 11F
或是可以的話,請你提供你我的式子用RegexBuddy
06/26 06:50, 11F

06/26 06:52, , 12F
比對結果會不一樣的字串,看看是否有把式子複雜化的必要
06/26 06:52, 12F

06/26 15:04, , 13F
已經講過這是"個人偏好"
06/26 15:04, 13F

06/26 15:05, , 14F
要選擇哪一種作法是原po的自由
06/26 15:05, 14F

06/26 15:09, , 15F
我只是提供一種解答,無意在此題上爭辯
06/26 15:09, 15F

06/26 15:35, , 16F
因為你的說法好像除了你的比對式,其他人都是較不精確的
06/26 15:35, 16F

06/26 15:35, , 17F
不過連.tudou.com都要特別寫一個不獲取的比對式,不僅複
06/26 15:35, 17F

06/26 15:35, , 18F
雜易錯,初學者看到只會卻步.要精確,以下最精確
06/26 15:35, 18F

06/26 15:35, , 19F

06/26 15:36, , 20F
只要能正確match目標字串的比對式就是精確的.
06/26 15:36, 20F

06/26 15:36, , 21F
而且比對式愈短愈好,這不就是Regex的目的?
06/26 15:36, 21F

06/26 15:36, , 22F
抱歉我的推文讓您這樣解讀,的確是我用詞不當
06/26 15:36, 22F

06/26 15:40, , 23F
讓您受到刺激
06/26 15:40, 23F

06/26 15:42, , 24F
的確您的寫法初學者比較容易上手
06/26 15:42, 24F

06/26 15:43, , 25F
以前我也是這麼寫的
06/26 15:43, 25F

06/26 15:53, , 26F
所以你現在的意思是你會初學者較不懂的(?:pattern)很厲
06/26 15:53, 26F

06/26 15:53, , 27F
害就是了?我的確受到了刺激,一個簡單的匹配,居然可以把
06/26 15:53, 27F

06/26 15:54, , 28F
式子寫得那麼冗長.那麼如果是多個字串我想式子應該會長
06/26 15:54, 28F

06/26 15:54, , 29F
到爆吧.
06/26 15:54, 29F

06/26 16:01, , 30F
哈哈哈,被您說中了
06/26 16:01, 30F

06/26 16:05, , 31F
教你一個式子 (\w+)/(?!\w) 用RegexBuddy測試看看吧
06/26 16:05, 31F

06/26 16:05, , 32F
Regex要像你這樣用的話,勸你真的直接把目標字串以外
06/26 16:05, 32F

06/26 16:06, , 33F

06/26 16:06, , 34F
全都直接比對,比較不會出錯
06/26 16:06, 34F

06/27 00:46, , 35F
啊,慢者,我有另外一個想法,不曉得對不對。
06/27 00:46, 35F

06/27 00:47, , 36F
假如我錯的話,希望你糾正我,讓我們來共同看看這件事
06/27 00:47, 36F

06/27 00:47, , 37F
假如原po要的是Bic3TWWQrRY,那直接搜尋"Bic3TWWQrRY"
06/27 00:47, 37F

06/27 00:47, , 38F
不是更快嗎?連regex都省了
06/27 00:47, 38F

06/27 08:55, , 39F
那你應該去問原po阿,或許真的如你說的那樣
06/27 08:55, 39F

06/27 08:55, , 40F
就可惜了可以賣弄把簡單複雜化的機會
06/27 08:55, 40F

06/27 09:06, , 41F
土豆網的下載點腳本我也有在用,我通常都是要下載複數個
06/27 09:06, 41F

06/27 09:06, , 42F
原po只需要下載一個的機率不大
06/27 09:06, 42F

06/27 09:07, , 43F
網頁中要取得載點的資訊所需字串通常要複數個匹配
06/27 09:07, 43F

06/27 09:07, , 44F
真希望見識見識以你的方式一個式子去匹配看看呢 ^_^
06/27 09:07, 44F

06/27 09:07, , 45F
喔 題外話 我跟我的同好都是在比式子愈精簡愈好
06/27 09:07, 45F

06/27 09:07, , 46F
如果比對式跟原字串差不多長是會被笑話的
06/27 09:07, 46F

06/27 09:07, , 47F
無意冒犯 請見諒
06/27 09:07, 47F

06/28 01:00, , 48F
不知道這樣講對不對,老外的書都寫的挺長的呢
06/28 01:00, 48F

06/28 01:01, , 49F
也許您可以發個信與這些老外交流一下
06/28 01:01, 49F

06/28 01:02, , 50F
國內同好跟國外同好交流一下
06/28 01:02, 50F

06/28 01:04, , 51F
不知道您意下如何呢?
06/28 01:04, 51F
※ 編輯: godspeedlee 來自: 122.124.100.96 (06/28 01:12)

06/28 08:37, , 52F
恩 國要的月亮比較圓 老外的屁都是香的
06/28 08:37, 52F

06/28 08:37, , 53F
不知道這樣講對不對?
06/28 08:37, 53F

06/28 08:38, , 54F
06/28 08:38, 54F

06/28 08:39, , 55F
簡單的說 就是想賣弄嘛 不知道這樣講對不對?
06/28 08:39, 55F

06/28 08:41, , 56F
如果老外的式子都要寫得又臭又長才能匹配目標字串
06/28 08:41, 56F

06/28 08:43, , 57F
恕小弟我沒興趣交流,小弟的同好更不用說了
06/28 08:43, 57F

06/28 08:47, , 58F
我還是習慣用不精確卻可以正確匹配目標字串的簡短式子
06/28 08:47, 58F

06/28 08:49, , 59F
不知道您覺得這樣可不可以呢?
06/28 08:49, 59F

06/28 08:50, , 60F
喔 不精確卻可以正確匹配目標字串 這句好矛盾 請無視之
06/28 08:50, 60F

06/28 22:57, , 61F
偏離主題啦...
06/28 22:57, 61F
文章代碼(AID): #1E1QEtoC (RegExp)
討論串 (同標題文章)
文章代碼(AID): #1E1QEtoC (RegExp)