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 и никогда не сталкивался с подобными проблемами.