Regex возвращает неверный результат

Вот очень своеобразный код, который возвращает неправильный результат. Я использую Regex для проверки типа слов - Положительный / Отрицательный / Обычный. Я получил базы данных (два файла отрицательных / положительных слов), которые используются для сравнения слов в базе данных и возвращает логический результат.

Часть 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 - Лямбда-выражение: используется для определения количества положительных / отрицательных слов.

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 к югу? Потому что я много раз работал с Regex и никогда не сталкивался с подобными проблемами.

0 ответов

Другие вопросы по тегам