Re: [問題] 用regex從檔名尾拿出數4-7位數字

作者: fox1375 (阿吠)   2021-10-14 01:32:10
這個其實很單純
最後要的數字前面一定有一個非數字的字元?(" "或"_")
所以也不用管到底是4位數還是7位數,或其他任何位數
把結尾的連續數字取出來就好了
直到前面的字元不是數字為止
stringr裡面的str_extract非常好用
str_extract("你的檔名", "[0-9]+$")
作者: fox1375 (阿吠)   2021-10-14 01:47:00
如果想用gsub,就是原文留言a大講的那樣 用.會包山包海我的習慣寫法會是"(.+)([_ ])([0-9]+$)", "\\3"拆成三部分(因為第一部分也可能有數字),不能[^0-9]缺點是要先知道分隔字元是且只" "或"_",並不是那麼泛用str_extract是近期覺得最好的方案補充,如果除了" "和"_"還有其他可能的分隔字元,改成"(.+)([^0-9])([0-9]+$)", "\\3" 就可以了(非數字做分隔)
作者: locka (locka)   2021-10-14 06:56:00
感謝f大,學習了~(另想確定,所以"\\n"對應的就是第幾個括號的比對結果嗎?謝謝)
作者: fox1375 (阿吠)   2021-10-14 13:44:00
沒錯, \\n 就是對應第n個括號
作者: andrew43 (討厭有好心推文後刪文者)   2021-10-14 15:19:00
確實方便很多,推薦。
作者: luenchang (luen)   2021-11-01 20:36:00
用"(.+)([_ ])([0-9]+$)", "\\3"成功拿出第3部分非常感謝fox1375的指點

Links booklink

Contact Us: admin [ a t ] ucptt.com