看板 RegExp 關於我們 聯絡資訊
/* 批次改檔名軟體 Ken Rename 支援正規表示法取代 * */ 有一堆檔名如下 XXXX_1_of_15.txt XXXX_10_of_15.txt XXXX_11_of_15.txt XXXX_12_of_15.txt ..... XXXX_2_of_15.txt XXXX_3_of_15.txt XXXX_4_of_15.txt ........ XXXX_9_of_15.txt 因為照檔名排序就亂掉 想改成所有數字都照二位數即可自動排序 例如 01 02 03 ..... 10 11 12 .....15 所以腦筋動到正規表示法來 目前做法很爛 其實用二次處理 先前處理把不相關字元去掉 變成 1.txt 10.txt 11.txt 12.txt ..... 2.txt 3.txt 4.txt .... 9.txt 然後不管副檔名 只取代檔名一位數 ^(\d)$ 變成 0$1 就變成 01.txt 02.txt .... 12.txt 上面偷用了開頭結尾技巧 請問有沒有辦法一步就只取代一位數數字檔名 前面加上0開頭 因為數字位數 有優先比較的順序 雖然可以用 (1[0-9])|([1-9]) 找到中間數字字元 用$1存二位數數字 $2存一位數數字 但取代的正規表示不會寫 用0$2會連二位數數字都改成0.txt -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.208.98 ※ 文章網址: http://www.ptt.cc/bbs/RegExp/M.1403777546.A.BC1.html
l10nel:你對 (1[0-9])|([1-9]) 會存入$2的觀念錯誤,這式子頂多只 06/26 18:25
l10nel:會存入$1,不然失敗,不是嗎?$2永遠是空的,因為中間有 | 06/26 18:26
l10nel:解決你的問題,為何去掉不相關字元?可用它當anchor, 06/26 18:27
l10nel:查找/_(\d)_/ 換成/_0$1_/ 一步不就好了? 06/26 18:28
waterfat520:一語驚醒夢中人 去除太多不必要字串 反而少了anchor 06/26 18:37
waterfat520:你是對的 由來是([1-9])|(1[0-9])會先比二位數字符"1" 06/26 18:38
waterfat520:所以才想把順序倒過來 反而只抓到雙位數 已解決感謝 06/26 18:40