2010-05-26 28 views
0

我是新來的Regular Expressions。正則表達式僅適用於網站

我需要找到剛剛網站一些文字,我在尋找一個正則表達式能找出像字符串:

www.my.home, http://my.site.it

但這正則表達式應找不到喜歡的字符串:

[email protected] 或者如果網站已經HTML標籤內

<a href="http://www.my.site.com/"> 
    <span style="font-style: normal;">www.mambo-test.org</span> 
</a> 

我試着用這一個:

\ B((HTTPS:// [^] )|(WWW [^]))

,但它也發現該網站在href和在標籤之間:

<a href="http://www.my.site.com/"> 
    <span style="font-style: normal;">www.mambo-test.org</span> 
</a> 

我不知道除了這種情況以外。

+1

你在使用什麼平臺?什麼語言? – Oded 2010-05-26 13:01:46

+1

如果不想在元素屬性*或*之外的元素屬性(即標籤之間,作爲文本節點)中找到模式,那麼您在哪裏可以找到它們? – Robusto 2010-05-26 13:02:19

+0

我使用的是PHP,客戶可以在richtext字段中插入來自cms的文本。有時候他們會插入一個鏈接,這很好,但有時他們只會在之前插入帶有或不帶有協議的文本。 我認爲用html鏈接標記替換此文本更加明顯,我正在尋找正則表達式來查找這種類型的文本。 – Katie 2010-05-26 13:38:36

回答

1

也許this解決了您的問題。

+0

這很好,但我需要找到沒有像這樣的協議的字符串:www.my.site.org – Katie 2010-05-26 13:16:27

+0

我剛剛測試了正則表達式。對於這個輸入:jodfhsdfhttp://www.my.site.org/fishdfsuidhf我得到了這個輸出:www.my.site.org。你在談什麼協議? – npinti 2010-05-26 13:26:59

2

您要做的事情叫做通過正則表達式解析HTML代碼

首先,我可以感受到你的痛苦。

二,here詳細解釋爲什麼你不應該這樣做。第三,如果你的客戶在富文本編輯器中插入網頁鏈接,他們有時會做得很好,有時候他們做得不好,那麼......這絕對是一種不好的做法,這類人應該接受教育。如果他們懶得點擊富文本編輯器的「鏈接」按鈕,他們的文本將被視爲簡單文本而不是鏈接。他們很快就會明白。

Forth,您使用了哪種富文本編輯器?TinyMCE提供了一整套功能和插件,使您可以輕鬆地預/後處理用戶插入的文本。這可能比嘗試編輯PHP中的文本更容易。

第五,如果你仍然需要這樣做,你可能想看看this tutorial on how to parse HTML to find links