在一定距离内找到2个字符串

时间:2019-08-01 13:28:46

标签: python regex

我试图在它们之间一定距离内以任意顺序存在2个字符串

例如我下面有2个句子

sentence = "Tiger is eating meat"
sentence = "Meat is eaten by Tiger"

我要搜索老虎和肉

我的正则表达式目前正在执行此操作,但是Tiger和Mean之间的距离没有限制。当老虎和肉彼此相邻或相隔100字串时,它将始终返回搜索结果。我想将老虎和肉之间的字数限制为5

re.search(r"(?=.*Tiger)(?=.*Meat)", sentence, re.IGNORECASE) 

re.search(r"(?=.*Meat)(?=.*Tiger)", sentence, re.IGNORECASE) 

理想情况下,我想使用一个正则表达式以任何顺序搜索老虎和肉类,但可以与2个正则表达式一起使用。 任何帮助将不胜感激

1 个答案:

答案 0 :(得分:4)

我们可以尝试使用以下正则表达式模式:

tiger (\S+ ){0,5}meat|meat (\S+ ){0,5}tiger

术语(\S+ ){0,5}tigermeat之间的零到五个词之间匹配。我们使用一种交替方式来允许tigermeat以任意顺序出现。

示例脚本:

sentence = "Tiger aaa bbb ccc ddd eee meat"
if re.match(r'tiger (\S+ ){0,5}meat|meat (\S+ ){0,5}tiger', sentence, re.IGNORECASE):
    print("MATCH")

这将打印MATCH,但是以下输入语句将失败并且不打印任何内容:

sentence = "Tiger aaa bbb ccc ddd eee fff meat"