如何匹配完全给定的单词或什么都不匹配?

时间:2019-07-01 11:24:03

标签: c# .net regex tsql

我有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

其中第一部分可能是以下内容之一或缺失:

  • [ #ALL#]
  • [ #ANY#]
  • [ #MIXED#]

,第二部分是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])?仅在匹配时才给出文本?

0 个答案:

没有答案