Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 逗号分隔列表的经典ASP比较_Regex_Arrays_Asp Classic_Vbscript - Fatal编程技术网

Regex 逗号分隔列表的经典ASP比较

Regex 逗号分隔列表的经典ASP比较,regex,arrays,asp-classic,vbscript,Regex,Arrays,Asp Classic,Vbscript,我有两个逗号分隔的列表:- 36,189,47,183,65,50 65,50,189,47 问题是如何在经典ASP中比较这两个值,以便识别并返回列表1中存在但列表2中不存在的任何值,同时记住关联数组不可用 例如,在上面的示例中,我需要返回值为36183 谢谢诸如此类(未经测试): 为了用正则表达式解决这个问题,可以使用lookaheads(正数和负数)和引用,例如: (zyx:~) % echo '36,189,47,183,65,50;65,50,189,47' | grep -oP '

我有两个逗号分隔的列表:-

36,189,47,183,65,50

65,50,189,47
问题是如何在经典ASP中比较这两个值,以便识别并返回列表1中存在但列表2中不存在的任何值,同时记住关联数组不可用

例如,在上面的示例中,我需要返回值为
36183

谢谢诸如此类(未经测试):


为了用正则表达式解决这个问题,可以使用lookaheads(正数和负数)和引用,例如:

(zyx:~) % echo '36,189,47,183,65,50;65,50,189,47' | grep -oP '((?>(?<![^,;])[^,;]+))(?=.*;)(?!.*;(|.*,)\1(?=,|$))'
36
183

(zyx:~)%echo'36189,47183,65,50;65,50189,47'|grep-oP'(?>(?VBScript)具有对象形式的关联数组


特别是对ASP不了解,但正则表达式显然不适合此工作。将字符串拆分为数组并检查array.indexOf或其等效项。正则表达式在这里是不允许的。感谢您的所有建议。这两种方法都不适用于我。我通过将列表传递到SQL存储过程并填充两个t来解决问题我可以从临时表中选择唯一的值,然后将结果插入到另一个表中。这始终是任务的终点,因此使用SQL而不是代码执行,然后将返回值传递给DB不会有太大损失。干杯
(zyx:~) % echo '36,189,47,183,65,50;65,50,189,47' | grep -oP '((?>(?<![^,;])[^,;]+))(?=.*;)(?!.*;(|.*,)\1(?=,|$))'
36
183
(zyx:~) % echo '36,189,47,183,65,50' | grep -oP '((?!(?<=,|^)65|50|189|47(?=,|$))(?<=,|^)[^,]+(?=,|$))'
36
183
Dim list1, list2
list1 = "36,189,47,183,65,50"
list2 = "65,50,189,47"

Dim arr1, arr2
arr1 = Split(list1, ",")
arr2 = Split(list2, ",")

' oDict will hold values from list1
Dim oDict, i
Set oDict = Server.CreateObject("Scripting.Dictionary")

For i = 0 To UBound(arr1)
    oDict(arr1(i)) = 1
Next

' Now loop through list2 and remove matching items from list1
For i = 0 To UBound(arr2)
    If oDict.Exists(arr2(i)) Then
        oDict.Remove arr2(i)
    End If
Next

Response.Write Join(oDict.Keys, ",") ' should be "36,183"