Ruby - 删除部分文本

时间:2012-11-28 09:31:49

标签: ruby regex string

我的文字类似于:

<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>

我正在尝试这样做:

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

但它只返回一个空字符串......如何修复它?

3 个答案:

答案 0 :(得分: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>"

答案 1 :(得分:2)

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

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

编辑只是仔细阅读...

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

答案 2 :(得分:2)

您指定了^,它与字符串的开头匹配。你应该做

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

http://rubular.com/r/c91EbHN0Af

中使用此功能