2010-07-01 64 views
4

我有一個blob文本字段的表。這個blob有很多html。其中一個html是h2。我想在h2標籤中找到一個單詞的所有實例,並將其替換爲另一個單詞(同時保留其他單詞相同)。MySQL正則表達式替換?

例如,我想在更換H2 「晃」 與 「bumbles」 以下內容:

前:

<h2>This is some wiggles html!</h2> 
<p>And here is some more wiggles html that could be ignored</p> 
<h2>And this is a decoy h2</h2> 

後:

<h2>This is some bumbles html!</h2> 
<p>And here is some more wiggles html that could be ignored</p> 
<h2>And this is a decoy h2</h2> 

一個陷阱我我擔心的是正則表達式在第一個h2結束時不會停止,而是繼續到最後一個關閉。

我有權訪問shell和phpmyadmin。

+5

這是錯誤的希望+1只是爲了bumbles和晃? – 2010-07-01 20:25:52

+0

哈哈,我不會抱怨:)。要保持樂趣;) – Matrym 2010-07-01 20:33:00

回答

1

mySQL本身沒有正則表達式替換功能:regex functions只是匹配。

似乎有一個user defined function以某種方式添加功能,但它需要重新編譯mySQL,可能不是一個選項。

我建議使用PHP等編程/腳本語言,使用其內置的正則表達式替換函數來更改內容並更新記錄。

編輯:忽略了php標籤。

+0

是的,甲骨文和PostgreSQL是我知道的本地正則表達式替換功能的唯一數據庫。 SQL Server 2005+,你必須通過CLR函數自己構建它... – 2010-07-01 21:11:42

1

Html不是一種常規語言,因此試圖用正則表達式解析它並不是最好的選擇。在我看來,我想利用一個HTML解析器來完成這項工作。 Here is a sample parser.

享受!

3

在MySQL中使用正則表達式

替換文本您可以將庫添加到MySQL獲得這一功能。

添加:LIB_MYSQLUDF_PREG
允許:正則表達式搜索&使用PCRE替換。
網站:http://www.mysqludf.org/lib_mysqludf_preg/

例子:

SELECT PREG_REPLACE('/(.*?)(fox)/' , 'dog' , 'the quick brown fox'); 

產量:

the quick brown 

匹配HTML使用正則表達式

解析HTML與正則表達式是不容易的,有很多陷阱。然而,你的例子很簡單,你應該能夠做你想要做的事情。

我認爲這將是有益的:http://haacked.com/archive/2004/10/25/usingregularexpressionstomatchhtml.aspx