Regex 正则表达式Vbscript

Regex 正则表达式Vbscript,regex,asp-classic,vbscript,Regex,Asp Classic,Vbscript,我正在摆弄正则表达式来缩短我一直在使用的字符串拆分例程 我有一个提交到asp脚本的购物车字符串,如下所示: addnothing|-1, addRST115400112*2xl|0, addnothing|-1, addnothing|-1, addRST115400115*xs|0, addnothing|-1 我希望能够提取代表两个库存项目的两个条目: addRST115400112*2xl|0 addRST115400115*xs|0 我已经设法让这段代码正常工作,但我不确定我使用的模

我正在摆弄正则表达式来缩短我一直在使用的字符串拆分例程

我有一个提交到asp脚本的购物车字符串,如下所示:

addnothing|-1, addRST115400112*2xl|0, addnothing|-1, addnothing|-1, addRST115400115*xs|0, addnothing|-1
我希望能够提取代表两个库存项目的两个条目:

addRST115400112*2xl|0
addRST115400115*xs|0
我已经设法让这段代码正常工作,但我不确定我使用的模式:

add[^n](.*)\*(.*)\|[0-9],
这将返回以下内容:

addRST115400112*2xl|0, addnothing|-1, addnothing|-1, addRST115400115*xs|0,
但我只想让它回来:

addRST115400112*2xl|0
addRST115400115*xs|0

有人能给我指出正确的方向吗?

你贪婪地匹配它(
*
吃得尽可能多,所以在你的情况下,它会一直吃到最后一个
\\\[0-9]
\0

您应该使用
*?
而不是
*
惰性地匹配它


所以你的正则表达式应该是

add(?!nothing)(.*?)\*(.*?)\|\d
\d
类似于
[0-9]


(?!nothing)
只是一个检查..它不匹配或消耗任何东西..它比
[^n]
更好,因为它更可靠、更富有表现力,而且不吃任何东西

试图保持.Pattern简单(这是VBScript!),并使修补变得更容易(真正挑出库存项目的东西并不清楚):

输出:

Success: addRST115400112*2xl|0 addRST115400115*xs|0

我明白你的观点,但股票代码并不遵循特定的模式,当然也不总是以R开头。我的问题还有一个后续问题,即我也将通过remRST115400112*2xl | 0删除该项目。我的问题还有一个后续问题,即我也将通过remRST115400112*2xl | 0删除该项目篮子和我没有;我不想使用不同的函数来搜索我想要实现的东西。@GrahamCole你可以使用
(add | rem)(?!nothing)(.*?)\*(.*?)\|\d
。如果你不介意的话,我只想跟进一下。regex模式\|\d的最后一部分实际上是可选的,因为站点当前未传入该部分。如何在模式中使此位成为可选位?
Success: addRST115400112*2xl|0 addRST115400115*xs|0