如何使用关键字和 return 匹配的子字符串进行模糊搜索?

How can I fuzzy search with a keyword and return the matched substring?

我希望能够以模糊的方式查找和替换。所以我需要对文本进行模糊搜索,并 return 对关键字进行模糊匹配,但我正在努力寻找一个实现方法。例如,我想做这样的事情:

text = 'The sunset is a lovely colour this evening'
keyword = 'Color'
desired_result = colour
text.replace(desired_result, keyword)
print(text)
The sunset is a lovely Color this evening

更复杂的是,需要替换的词组可能不止一个词,因此拆分不起作用。

我试过 FuzzyWuzzy 的处理函数,但这只会 return 关键字不匹配。例如:

process.extractOne("This sunset is a lovely colour this evening", "Color")
("Color", 90)

我需要文本中的匹配项以便替换。

Python 的 Regex 可以进行模糊匹配,但性能是一个问题,而且它似乎对我的完整短语不起作用。

text = 'The sunset is a lovely colour this evening'
term = 'Color'
r = regex.compile('('+text +'){e<=5}')
print(r.match(term ))
None

如果您使用模糊搜索,您可以使用 find_near_matches 获取匹配项的索引,然后使用其中的列表理解来获取实际使用的字符串

from fuzzysearch import find_near_matches
my_string = 'aaaPATERNaaa'
matches = find_near_matches('PATTERN', my_string, max_l_dist=1)

print([my_string[m.start:m.end] for m in matches])