VBScript多重替换正则表达式

4
如何在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, "")

我希望能够替换一个名为cat或subcat的参数,将其从名为param的字符串中删除。

例如:

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

我想从每个字符串中删除cat=meow和subcat=purr。
2个回答

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

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

谢谢,但是我怎么将两个完全不同的模式串起来呢?比如说删除任何与“dog”或“cat”匹配的内容? - Choy
谢谢,虽然在这种情况下,$1将返回每个匹配的?或&,所以我得到了string&&。 - Choy

2
通常,在正则表达式中,OR 是一个管道符号(pipe):
[?&]cat=[\w-]+|[?&]subcat=[\w-]+

在这种情况下,也可以这样做:将 sub 设为可选项:
[?&](sub)?cat=[\w-]+

另一种选择是在未共享的部分使用或运算符:
[?&](cat|dog|bird)=[\w-]+

谢谢。我之前一直在使用 |,但是我意识到它没有正常工作的原因是因为我没有设置 regEx.Global = True。 - Choy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接