[問題] 用RegExp將字串切割

看板Perl作者 (惡靈 退散)時間18年前 (2007/03/22 10:24), 編輯推噓4(401)
留言5則, 4人參與, 最新討論串1/5 (看更多)
我有一列字串 $str = "|%some string 1\n|%some string 2\n|%...\n|%some string n" 也就是這裡頭可拆成 n 個以 |% 開頭的字串 想把這字串切成陣列 我這麼寫 @_ = ($str =~ m/|%.*?[^|][^%]/gs); 可是string 裡有 | 這樣就破功了 我是有想過用split /|%/, $str 然後再一個一個把 |% 補回去.. 可是我處理的字串很大 存成檔案大概 20M 這樣效能會變很差 請教各位 像這種的 RegExp 應該長什麼樣子? 或者根本就寫不出來呢? 只能用split? 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.143.215.28

03/22 18:26, , 1F
split /(?=\|%)/, $str
03/22 18:26, 1F

03/22 18:30, , 2F
...我也想半天 結果 我也被秒殺了... @@"
03/22 18:30, 2F

03/22 18:49, , 3F
QQ 真的被秒殺... 我想好久說 謝謝!! m(_ _)m
03/22 18:49, 3F

03/23 08:22, , 4F
split /([|]%[^|]+)/, $str 試試看吧
03/23 08:22, 4F

03/23 10:14, , 5F
這個是不是遇到 |%str 1|asdf|%str 2 只取到|%str 1
03/23 10:14, 5F
文章代碼(AID): #160bb9_6 (Perl)
討論串 (同標題文章)
文章代碼(AID): #160bb9_6 (Perl)