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>

我正在尝试这样做:

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

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

4

3 回答 3

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>"
于 2012-11-28T09:36:54.820 回答
2

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

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

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

text.sub!(/<p>The post.*$/, '')
于 2012-11-28T09:35:52.220 回答
2

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

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

在http://rubular.com/r/c91EbHN0Af玩这个

于 2012-11-28T09:36:16.773 回答