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