我试图在它们之间一定距离内以任意顺序存在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个正则表达式一起使用。 任何帮助将不胜感激
答案 0 :(得分:4)
我们可以尝试使用以下正则表达式模式:
tiger (\S+ ){0,5}meat|meat (\S+ ){0,5}tiger
术语(\S+ ){0,5}
在tiger
和meat
之间的零到五个词之间匹配。我们使用一种交替方式来允许tiger
和meat
以任意顺序出现。
示例脚本:
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"