我有SQL CLR函数-RegexMatches
,用于在T-SQL语句之间实现正则表达式语法。
因此,我想匹配以下字符串:
[QUESTIONANSWERFILTER:[*#ALL#*]109_1686_1, 103_1685_2, 103_1007_2]
并仅获得以下部分:
[*#ALL#*]109_1686_1, 103_1685_2, 103_1007_2
其中第一部分可能是以下内容之一或缺失:
,第二部分是number_number_number
的CSV。
我正在使用以下正则表达式:
(?in)(?<=\[QUESTIONANSWERFILTER:)(\[\x2A#(ANY|ALL|MIXED)#\x2A])?[^]]+(?=])
在所有情况下都有效,除了用静态单词打错字时。例如:
[]daadadada[]dadada[a]dada[ANfY][QUESTIONANSWERFILTER:[*#ALL#*]109_1686_1, 103_1685_2, 103_1007_2]dada[a]dada[ANY]
给予
[*#ALL#*]109_1686_1, 103_1685_2, 103_1007_2
但是如果我将ALL
更改为ALLs
,则会得到:
[*#ALLs#*
当我应该得到109_1686_1, 103_1685_2, 103_1007_2
时。
我不明白为什么ALLs
被匹配,因为我有(\[\x2A#(ANY|ALL|MIXED)#\x2A])?
仅在匹配时才给出文本?