看板 RegExp 關於我們 聯絡資訊
※ 引述《erthe (uuuu)》之銘言: : 小弟使用VBA or perl : 目前的問題是 有字串如下 : A........B.......... : AA.......BB......... : AAA......BBB......... : 規則是字串A和字串B出現的次數一樣 請問要怎麼表達? : 小弟試過 "A{}.+B{}" 就是不知道{}內次數要怎麼一樣 perl 可以這樣寫: /(?<!A)A([^AB]*|A(?-1)B)B(?!B)/ 最前面的 (?<!A) 是說這一串比對到的字串 的前面不能剛好是一個 A 字 最後面的 (?!B) 是說這一串比對到的字串 的後面不能剛好是一個 B 字 (放這兩個的目的也就是想避免找到像這樣的字串 (漏掉前面一個 A 不吃): AAABB 往內一點點, 頭吃一個 A, 尾吃一個 B. 中間的括號裡面分有兩個 branch: [^AB]* 是一團沒有A也沒有B的東西若干(或0個) A(?-1)B 是說 先1個A, 然後再走一次中間這一個括號, 然後再1個B 其中 (?-1) 指的是想要走從它的位置往前數, 遇到的第1個左括號的那一組. 也就是 ([^AB]*|A(?-1)B) 這一組 嗯, 我是假設你要的一串 A 和一串 B, 如果不是緊臨著的話, 之間不能出現任何的 A 或 B. 這個 pattern 會接受 AAABBB KAAAACBBBB 會拒絕 AAABBBB AAACBBBB -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.121.80.249 ※ 文章網址: http://www.ptt.cc/bbs/RegExp/M.1415297116.A.8B5.html
CindyLinz: 細節說明可以看 http://perldoc.perl.org/perlre.html 11/07 02:06
※ 編輯: CindyLinz (112.121.80.249), 11/07/2014 02:18:42
lin1987www: 大大超強的!我本來嘗試?>去做不行...最後看懂大大答案 11/12 19:43
lin1987www: 可否請大大印出Debug的程序,我腦袋跑步出來結果 xd 11/12 20:14
CindyLinz: Debug 的程序是指...?? 11/12 23:15
lin1987www: 參考 http://stackoverflow.com/a/2348725/1584100 11/20 11:05