这是一个非常特殊的代码,它返回错误的结果。我使用正则表达式来测试单词的类型 - 正面/负面/常规。我得到了数据库(两个负/正字文件),用于将这些单词与数据库进行比较并返回一个布尔结果。
Public Enum WordType As Integer
PositiveWord
NegativeWord
RegularWord
End Enum
Private Sub GetWordType()
If Regex.Match(cDataBases.PositiveWordsFile, Word).Success = True Then
eWordType = WordType.PositiveWord
ElseIf Regex.Match(cDataBases.NegativeWordsFile, Word).Success = True Then
eWordType = WordType.NegativeWord
Else
eWordType = WordType.RegularWord
End If
End Sub
Public Function IsPositive() As Boolean
If eWordType = WordType.PositiveWord Then Return True Else Return False
End Function
Public Function IsNegative() As Boolean
If eWordType = WordType.NegativeWord Then Return True Else Return False
End Function
Private Function CountPositiveInBody() As Integer
Return cArticle.BodyText.FindAll(Function(PBodyWord As SingleWord)
Return PBodyWord.IsPositive
End Function).Count
End Function
我正在使用Expresso程序来检查我的代码和我的正则表达式。当我将单词作为输入插入Expresso和数据库作为模式时,我得到了一个截然不同的结果 - Expresso返回的数量少于从CountPositiveInBody
函数返回的结果的正数字。
这很奇怪,因为我在Expresso中使用相同的输入和相同的模式,但我得到了不同的结果。
我在GetWordType
中插入了一个断点,发现问题是Regex.Match
返回true,尽管这个词不是正/负。
为什么会这样?我GetWordType
sub中有问题吗?因为我以前曾多次与Regex合作过,而且从未遇到过这种问题。