使用or运算符时,Python正则表达式的模糊搜索不会返回所有匹配项

时间:2017-03-27 13:45:05

标签: python regex fuzzy-search

例如,当我使用

regex.findall(r"(?e)(mazda2 standard){e<=1}", "mazda 2 standard")

,答案是['mazda 2 standard']像往常一样。

但是当我使用

regex.findall(r"(?e)(mazda2 standard|mazda 2){e<=1}", "mazda 2 standard")

regex.findall(r"(?e)(mazda2 standard|mazda 2){e<=1}", "mazda 2 standard", overlapped=True)

,输出根本不包含'mazda 2 standard'。如何使输出也包含'mazda 2 standard'?

1 个答案:

答案 0 :(得分:1)

请参阅PyPi regex documentation

  

默认情况下,模糊匹配搜索满足给定约束的第一个匹配项。 func contactPicker(picker: CNContactPickerViewController, didSelectContact contact: CNContact) { print(contact) } 标志将使其尝试改善其找到的匹配的拟合(即减少错误数量)。
  
  ENHANCEMATCH标记将使其搜索最佳匹配。

您的代码获得BESTMATCH,因为此匹配不包含任何错误。

因此,使用mazda 2标记(内联修饰符选项为BESTMATCH):

(?b)