2010-05-21 147 views
4

如何在vbscript中匹配多個模式?vbscript多個替換正則表達式

Set regEx = New RegExp 

regEx.Pattern = "[?&]cat=[\w-]+" & "[?&]subcat=[\w-]+" // tried this 
regEx.Pattern = "([?&]cat=[\w-]+)([?&]subcat=[\w-]+)" // and this 

param = regEx.Replace(param, "") 

我要替換什麼也沒有一個字符串名爲PARAM任何參數稱爲貓或SUBCAT。

例如

string?cat=meow&subcat=purr or string?cat=meow&dog=bark&subcat=purr 

我想從每個字符串中刪除貓喵=和SUBCAT =呼嚕聲。

回答

2

一般來說,OR在正則表達式是一個管道:

[?&]cat=[\w-]+|[?&]subcat=[\w-]+ 

在這種情況下,這也將工作:製作sub可選:

[?&](sub)?cat=[\w-]+ 

另一種選擇是在使用或未共享部分:

[?&](cat|dog|bird)=[\w-]+ 
+0

謝謝。我正在做| |之前,但我意識到它不能正常工作的原因是因爲我沒有regEx.Global = True設置。 – Choy 2010-05-21 19:01:31

3
regEx.Pattern = "([?&])(cat|dog)=[\w-]+" 

param = regEx.Replace(param, "$1") ' The $1 brings our ? or & back 
+0

謝謝,但我如何將兩種完全不同的圖案串起來?比方說,刪除任何匹配「狗」或「貓」的東西? – Choy 2010-05-21 18:51:17

+0

@George:看我編輯 – 2010-05-21 18:54:35

+0

謝謝,雖然在這種情況下,$ 1會返回?或每場比賽的&,所以我得到字符串&& – Choy 2010-05-21 19:03:51