Rails拆分文本

时间:2013-09-03 07:27:57

标签: ruby-on-rails regex

请帮我分割一个字符串以放入数组。

字符串:

<p>TEXT1</p>
<p><img src="img1.jpg"></p>
<p>TEXT 2</p>
<p><img src="img2.jpg"></p>
<p>TEXT3</p>

我需要通过

拆分它
<p><img src="*****"></p>

在结果数组中:

result[0]:

<p>TEXT1</p>
<p><img src="img1.jpg"></p>

result[1]

<p>TEXT 2</p>
<p><img src="img2.jpg"></p>

result[2]

<p>TEXT3</p>

UPD:

:001> str = '<p>TEXT 1</p><p><img src="/upload/posts/13/009781884.jpg"></p><p>TEXT 2</p><p><img src="/upload/posts/14/010098317.jpg"></p><p>TEXT3</p>'
:002> array = str.scan(/<p>[a-zA-Z 0-9<\/>]*<img src="[\/a-zA-Z0-9.]*"><\/p>|<p>[a-zA-Z 0-9\d\D]*<\/p>/)
 => ["<p>TEXT 1</p><p><img src=\"/upload/posts/13/009781884.jpg\"></p>", "<p>TEXT 2</p><p><img src=\"/upload/posts/14/010098317.jpg\"></p>", "<p>TEXT3</p>"] 

1 个答案:

答案 0 :(得分:0)

这个怎么样:

split(/(.*?<p><img src=".*?"><\/p>)\n/m).delete_if(&:blank?)

? s将匹配限制为最小长度,正则表达式末尾的m使其成为多行匹配。有空白结果,因此我们删除了delete_if(&:blank?)