Re: [問題]請問正規表示式如何抓取這樣的字串
看板RegExp (正規表示式 Regular Expression)作者CindyLinz (Cindy Wang)時間10年前 (2014/11/07 02:05)推噓1(1推 0噓 4→)留言5則, 2人參與討論串2/3 (看更多)
※ 引述《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
→
11/07 02:06, , 1F
11/07 02:06, 1F
※ 編輯: CindyLinz (112.121.80.249), 11/07/2014 02:18:42
推
11/12 19:43, , 2F
11/12 19:43, 2F
→
11/12 20:14, , 3F
11/12 20:14, 3F
→
11/12 23:15, , 4F
11/12 23:15, 4F
→
11/20 11:05, , 5F
11/20 11:05, 5F
討論串 (同標題文章)
RegExp 近期熱門文章
PTT數位生活區 即時熱門文章