正则表达式模糊匹配&错字匹配
当定义的正则化表达式与文本中内容存在差异,不能正确匹配到想要的信息,可以使用regex的模糊匹配重新定义正则表达式。
import reimport regextext = "《中华人民共和国消防法》策一百六十八条策十一款第六项"pattern = "消防法》第(.+?)条第(.+?)款第(.+?)项"out_re = re.findall(pattern, text)print("{}结果:".format(pattern), out_re)# 当未找到关键信息,则生成新的正则表达式if len(out_re) == 0:new_pattern = ""for stable_str in pattern.split("(.+?)"):# "{s<=%s}" % int(len(stable_str) * 0.5) : 模糊匹配,允许出现错字的个数new_stable_str_list = regex.findall('(?:{})'.format(stable_str) + "{s<=%s}" % int(len(stable_str) * 0.5),text)new_pattern += new_stable_str_list[0] + "(.+?)"new_pattern = new_pattern[:-5]out_regex = re.findall(new_pattern, text)print("{}结果:".format(new_pattern), out_regex)
输出结果展示:
消防法》第(.+?)条第(.+?)款第(.+?)项结果: []
消防法》策(.+?)条策(.+?)款第(.+?)项结果: [('一百六十八', '十一', '六')]