2011-02-09 55 views
0

我見我基本上使用上述以取代一個url某些字以下的正則表達式ASP.NET正則表達式

(?<!<[title|h1|a][^>]*>[^<]*)(?<!<[meta|img][^>]*[^/>])(someword) 

。即

The all new product x 

將成爲

The all new <a href="/productx">product x</a> 

其所有工作正常。我正在做負面的背後,所以我不會取代正在傾斜的東西,H1和錨標籤。我現在需要擴展它,以便如果錨標記中存在粗體標記,則不匹配。

<a href="/something">The all new <b>product x</b></a> 

不應該被替換。我現在的方式是負面的後臺發現一個大膽的標籤和匹配。我只想讓它跳過,如果內部是。對於那些有興趣誰,我需要這個作爲我的搜索頁面返回結果爲

<a href="/something"><b>searchterm</b> some other text</a> 

任何幫助非常讚賞

回答

0

簡短的回答是,你不能寫一個良好的,單一的正則表達式做你想。總會有特殊情況導致誤報。有更好的方法來做你想做的事。這就是說,如果你仍然想要一個正則表達式的解決方案,這可能更接近你想要的:

(?<!<(?:title|h1|a)[^>]*>(?:[^<]|<[^/]|</(?!title|h1|a))*|<[meta|img][^>]*)(someword) 
+0

這樣做的工作,謝謝。只是出於興趣,你會建議什麼其他方式?我非常感興趣。謝謝 – Peuge 2011-02-09 11:56:51