2012-01-14 46 views
0

我把我的頭髮拉出來,看起來你不能在VBScript中做doesn't begin with的正則表達式。VBScript正則表達式來匹配不在錨點的所有URL

我已經開始編寫一個難找的雜亂的代碼片段,但我寧願找到一個更簡單的方法。

樣品輸入:

<a href="http://www.scirra.com/forum" target="_blank" title="Some value">my link text</a><br /><br /> 
<a href="http://www.scirra.com/blog" target="_blank" title="Some value">http://www.scirra.com/blog</a><br /><br /> 
<a href="http://www.scirra.com" target="_blank" title="Some value">http://www.scirra.com</a><br /><br /> 
<a href="http://www.scirra.com" target="_blank" title="A title">tester</a><br /><br /> 
http://www.google.com<br /><br /> 
http://www.scirra.com/blog<br /><br /> 
https://www.scirra.com 

正如你可以看到,在過去3個網址不包含在錨點標籤和需要的人。我試圖建立一個規則,它匹配https?://它不以<a>標籤開始,但我找不到一個簡單的方法來做到這一點。

任何人都可以幫忙嗎?

回答

1

不幸的是VBScript不具有lookbehinds(見here爲正則表達式是什麼口味有什麼功能的列表)

你總是可以匹配的是這樣的:

(^|[^>])(https?://[rest_of_url_regex_here]) 

然後,如果你是做一個查找/替換,用\1<a href="\2">\2</a>來替換你放回的那個額外字符。

+0

我不確定這是否會運作良好,如果有人這樣做'http://www.google.com'它不會匹配。 :( – 2012-01-14 03:16:32

+0

以及解析HTML/XML的推薦方法是使用某種專門爲它構建的解析器,這完全是因爲正則表達式在這類問題上失敗。正則表達式對解析HTML非常不利。 – 2012-01-14 03:18:48