2010-05-21 106 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