正则表达式返回错误的结果

时间:2014-06-16 19:00:46

标签: regex vb.net expresso

这是一个非常特殊的代码,它返回错误的结果。我使用正则表达式来测试单词的类型 - 正面/负面/常规。我得到了数据库(两个负/正字文件),用于将这些单词与数据库进行比较并返回一个布尔结果。

第1部分 - 枚举:每个单词可以是正面/负面/常规。

Public Enum WordType As Integer
   PositiveWord
   NegativeWord
   RegularWord
End Enum

第2部分 - 正则表达式测试:将每个单词与数据库进行比较。

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

第3部分 - 返回的功能。

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

第3部分 - Lambda表达式:用于确定正/负词的数量。

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合作过,而且从未遇到过这种问题。

0 个答案:

没有答案