2012-11-28 105 views
1

我有一个类似的文字:红宝石 - 删除部分文字

<p>some text ...</p><p>The post <a href="http://url_address/">text...</a> appeared first on <a href="http://url_address">some another text</a>.</p> 

我需要从<p>The post去除一切,所以结果将是:

<p>some text ...</p> 

我想OT这样做:

text.sub!(/^<p>The post/, '') 

但它只返回一个空字符串......如何解决这个问题?

回答

4

你的正则表达式是不正确。它匹配字符串开头的每个<p>The post。你想要的是相反的:匹配它的位置到字符串的末尾。看一下这个。

s = '<p>some text ...</p><p>The post <a href="http://url_address/">text...</a> appeared first on <a href="http://url_address">some another text</a>.</p>' 

s.sub(/<p>The\spost.*$/, '') # => "<p>some text ...</p>" 
2

'^'匹配整个字符串的开头。尝试做

text.sub!(/<p>The post/, '') 

编辑只是更仔细地阅读它...

text.sub!(/<p>The post.*$/, '')