2011-07-03 129 views
1

我想解析兩個不同標記的字符串,然後將每個標記存儲在數據庫中。我們稱這些tag1和tag2。我有一個分類,「?#」是tag1和tag2之間的分界線。解析Ruby中的字符串然後存儲到數據庫

假設

t = "random text blah firsttag?#secondtag more blah" 

目標:TAG1應該是 「firsttag」 和TAG2應該是 「secondtag」 而不在前或在後隨機文本。每個應該存儲爲數據庫中的對象。

我想是這樣的:

t.split 

但它返回

["random text blah firsttag", "secondtag more blah"] 

,包括隨機文本。如何讓分割線在任何方向到達第一個空間時停止?

我想這一點,如果有字符串中的多個標籤對,也工作,例如,如果:

m = "random firsttag#?secondtag blah blah 1sttag#?2ndtag blah blah blah" 

我是很新,既Ruby和Rails,所以我真的很感激你幫助這個!

回答

3

您可以使用正則表達式與分束合成:

tags = t.match(/\S+\?#\S+/)[0].split('?#') 

說明

首先,讓我們捕捉到的文字,這是tag?#tag2的有趣的部分。我們將使用一個正則表達式:

/\S+\?#\S+/ 

說明:

\S+捕獲定界符前面(標籤)

\?#捕獲的分隔符令牌

\S+捕捉所有非空白字符尾隨非空白字符(標記2)

該正則表達式匹配(whi CH我們與[0]訪問是:

firsttag?#secondtag

然後從我們使用的分隔符剛拆分,我們得到與標籤的陣列。

乾杯!

PS:我已經重新發布帖子,因爲它與ruby-on-rails無關。這只是普通的紅寶石

+0

謝謝帕布羅,我發現特別有用的正則表達式走過! – s2t2

+0

沒問題!歡呼 –

+0

後續問題:我怎麼能夠將這些解析的片段存儲在數據庫中?具體而言,我使用Twitter Gem來回復並將推文存儲在數據庫中。我希望能夠以上述方式解析推文,並將片段作爲實例存儲在我創建的相關對象類中。有任何想法嗎? – s2t2

相關問題