Set Regex = New RegExp
Regex.Pattern = """[^""]*""|[^,]*"
Regex.Global = True
//I have a for loop here to loop through records
text = Cells.Item(r, 7).Value
For Each Match In Regex.Execute(text)
count = count + 1
Next Match
这是我的Regex代码,这是我从中提取数据的表,
当我在调试模式下运行代码时,PCBaa计数为2,c3和c4为14,C6-c36为36,我的正则表达式代码在提取逗号之间的代码时是错误的吗? / p>
答案 0 :(得分:3)
好吧,我自己尝试了,似乎首先,似乎你没有在每行之后将计数值重置为0。这可能是有意的,但你知道。 第二件事是正则表达式似乎工作得很好,但总是给你双倍数量,因为它匹配每个匹配结束时的零长度字符串。 因此,对于最后一行(C6-C26),它可以加工:
1)“C6”2)“”3)“C7”4)“”......等等。
为了保持沉默,我对自己有点惊讶,并且不知道为什么现在就是这样。 但是解决方案非常简单:因为你希望结果中没有零长度的字符串(因此它们不会被计算)你只需要将*替换为+,这将告诉正则表达式只匹配至少有一个角色。 因此,您的正则表达式字符串应如下所示:
Regex.Pattern = """[^""]+""|[^,]+"
为什么你在c3上得到14分,c4让我感到惊讶...我得到了一个因为零长度匹配而导致重复计算的4因此。