我正在写一个Python聊天机器人。无论技术是什么(Levenshtein,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模块,但仍然无法获得“模糊值”。
由于这个页面上的问题是理论上解决的,所以进一步追加将是不光彩的。所以我提出another question about this new issue,希望你能解决它!
答案 0 :(得分:1)
答案 1 :(得分:0)
(我?)(?:我| | YM))\ S +((:( ?:我| YM):。?。?(?:?..我| n..e |呐..)|(?:????..我| n..e |呐..))\ S +(:( ?:是| SI)|(?:是| SI))\ S + (\ W [\ W \ S] )\ S
让我们将其分开:
(?i)
:设置i
修饰符以匹配不区分大小写的(?:(?:my|ym).?|.?(?:my|ym))
:这将匹配my, ym, My, Ym, may, amy etc...
\s+
:匹配空格一次或多次(?:.?(?:..am|n..e|na..)|(?:..am|n..e|na..).?)
:匹配name, naao, tame, lame, n99e, names, Naats etc...
\s+
:匹配空格一次或多次(?:(?:is|si).?|.?(?:is|si))
:匹配is, si, ist, sit, siR etc...
\s+
:匹配空格一次或多次(\w[\w\s]*)
:匹配单词和空格一次或多次并对其进行分组(必须以单词\w
开头)\s*
:匹配空格零次或多次