Я пишу чат-бот Python. Независимо от того, что это за метод (Левенштейн, LCS, регулярное выражение и т. д.), я хочу, чтобы шаблон, подобный My name is [ A ].
, был достаточно умным, чтобы соответствовать таким строкам, как:
My name is Tslmy. #Distance should = 0, and groupdict()['a'] outputs "Tslmy"
My name is Tesla Tahomana. #Distance should = 0(!), and groupdict()['a'] outputs "Tesla Tahomana"
my naem ist tslmy . #With a little typo, the distance = 5, and groupdict()['a'] outputs "tslmy "
Позвольте мне использовать groupdict()['a']
для обозначения того, что захватил объект [ A ]
(на самом деле (?P<identifier>match)
).
- Другими словами, я ищу «Левенштейн» с пропусками/пропусками/пробелами/пренебрежением, а также выбираю то, что было пропущено.
- По-другому, я ищу нечеткое (также известное как приблизительное) регулярное выражение, которое может быть менее строгим с шаблоном, по-прежнему предоставляет старый добрый
groupdict()
, а также значение "нечеткости" (или "расстояние редактирования", необходимое для определения "наиболее подходящего шаблона для строки" позже).
Это предпочтительное решение, поскольку оно обеспечивает "достаточное"groupdict()
при правильном управлении.
Однако , Библиотека TRE и библиотека REGEX, которая оказалась наиболее близким решением, похоже, не обеспечивают значение «нечеткости». Если это можно решить, то тем лучше!
Это возможно? Спасибо за внимание.
Обновление:
В конце концов я решил использовать мощный модуль regex, но так и не смог получить " значение размытости».
Поскольку вопрос на этой странице теоретически решен, добавление слишком большого количества слов будет нечестным. Поэтому я предложил еще один вопрос об этой новой проблеме и надеюсь, что вы сможете ее решить!
.
был экранирован;[.]
или\.
-- в противном случае он соответствует любому символу, а не только самому себе. - person Charles Duffy   schedule 17.11.2015