使用Python 3.7在文本中查找类似模式

使用Python 3.7在文本中查找类似模式,python,regex,Python,Regex,我有一个文本模式(关键字)的集合,我的目标是在HTML文本中找到相似和合适的单词,并使用Python3.7将它们收集到一个列表中。例如,如果我给定的一组模式是:{“香蕉”、“我的苹果”、“橙色”、“大葡萄”},我希望在HTML文本中找到诸如:“香蕉”、“我的苹果”、“我的苹果”、“橙色”、“大葡萄”、“大葡萄”“>香蕉”等单词。最好的方法是什么?我曾考虑过使用正则表达式库,但无法准确地找到我想要的单词 我目前的代码是: import re def find_patterns_in_text(k

我有一个文本模式(关键字)的集合,我的目标是在HTML文本中找到相似和合适的单词,并使用Python3.7将它们收集到一个列表中。例如,如果我给定的一组模式是:{“香蕉”、“我的苹果”、“橙色”、“大葡萄”},我希望在HTML文本中找到诸如:“香蕉”、“我的苹果”、“我的苹果”、“橙色”、“大葡萄”、“大葡萄”“>香蕉”等单词。最好的方法是什么?我曾考虑过使用正则表达式库,但无法准确地找到我想要的单词

我目前的代码是:

import re

def find_patterns_in_text(keywords, html_text):
   output_list = []
      for keyword in keywords:
         if re.findall(keyword, html_text):
            output_list.append(keyword)
   return output_list
我的代码无法正常工作,因为它无法找到以下情况:

  • 如果HTML文本或关键字集中出现的单词旁边带有某种特殊字符,则它无法识别
  • 如果其中一个关键字包含“-”而不是“”,或者以类似方式包含“而不是”-”,并且在HTML文本中出现相同的单词,但“”和“-”不合适,则无法识别它

转义搜索的模式,并在结果表达式中用
[\s-]+
模式替换
-
和空格

:

重新导入
def在文本中查找模式(关键字、html文本):
输出列表=[]
对于关键字中的关键字:

if re.search(r)(?转义您搜索的模式,并在结果表达式中用
[\s-]+
模式替换
-
和空格

:

重新导入
def在文本中查找模式(关键字、html文本):
输出列表=[]
对于关键字中的关键字:

如果重新搜索(r)(?它不能正常工作,即使同一个词同时出现在关键字和文本中,它也无法识别。例如,如果关键字是:[“medicine”],HTML文本是:“medicine”。或者另一个示例:关键字是:[“biotechnology”]文本为:@AviFerdman如果搜索必须不区分大小写,请使用
re.I
re.search(re.sub(r'(?:\\[-])+',r'[\\s-]+',re.escape(关键字)),html\u text,re.I)
。请参阅。我将文本和关键字都转换为小写,因为我只能使用默认库,但它仍然无法识别模式。@AviFerdman,它可以工作。无需转换为小写。即使同一个单词同时出现在关键字和文本中,它也无法识别。例如,如果关键字rds是:[“medicine”],HTML文本是:“medicine.”或者另一个例子:关键字是:[“biotechnology”],文本是:@AviFerdman如果搜索必须不区分大小写,请使用
re.I
re.search(re.sub(r'(?:\\[-])+,r'[\\s-]+',re.escape(关键字)),HTML\u text,re.I)
。请参阅。我将文本和关键字都转换为小写,因为我只能使用默认库,但它仍然无法识别模式。@AviFerdman,它可以工作。无需转换为小写。