Re: [問題] 請問Ruby的正規表現式如何使用Shortest …
※ 引述《Romulus (羅姆修復計畫開始)》之銘言:
: 我現在有一個剌剌長的html file
: 我要把其中的<a href="....">TEXT</a>都換成[[TEXT]]
: 我想用regular expression來作,可是因為String.gsub!用的都是longest matching,
沒聽過這種說法,一般聽到的都是說 greedy,
好奇在哪個環境中是用這種說法?我覺得比 greedy 好懂 ._.
參考:
http://en.wikipedia.org/wiki/Regular_expression#Lazy_quantification
: 所以如果本文是:
: <a href="...">TEXT1</a>
: <a href="...">TEXT2</a>
: 下txt.gsub!(%r{<a href=.*>(.*)</a>}, '[[\+]]')
: 就會只剩下[[TEXT2]],TEXT1不見了
實際上這邊沒有用 multiline 的 modifier 的話,不會有你說的狀況 @@
multiline 是在最後加 m, 如:%r{<a href=.*>(.*)</a>}m
也可以加 i 表示 case-insensitive
: 請問有辦法在Ruby裡面使用shortest matching嗎?
如上網址所說明, .*? 就是了
另外我不建議用 regexp 去 parse html, 碰到複雜的情況會沒辦法解,
除非你不在意精確度。否則我會建議用 hprioct, 可以對付不正確的 html.
如果確保 input 一定是 valid xml, 可以用 rexml.
(不過看起來你的情況跑 regexp 好像也夠)
--
By Gamers, For Gamers - from the past Interplay
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.28.18
推
08/28 21:13, , 1F
08/28 21:13, 1F
→
08/28 21:13, , 2F
08/28 21:13, 2F
→
08/28 21:13, , 3F
08/28 21:13, 3F
→
08/29 15:19, , 4F
08/29 15:19, 4F
→
08/31 11:05, , 5F
08/31 11:05, 5F
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章