问题:
我有这个人为的示例功能:
def test_function(target, words):
pattern = re.compile(r"|".join(words))
return bool(pattern.search(target))
它采用单词列表并动态构造正则表达式模式,而无需正确转义列表中的单词。
使用示例:
text = "hello world!"
print(test_function(text, ["test"])) # prints False
print(test_function(text, ["hello"])) # prints True
print(test_function(text, ["test", "world"])) # prints True
问题:
如何测试此函数以证明没有正确的正则表达式转义或输入清理?
换句话说,words
我应该提供列表中的哪些项目来“破坏”这个功能?
我尝试了几个“邪恶”的正则表达式来模拟灾难性的回溯并强制函数像(x+x+)+y
or一样挂起(a+)+
,但函数只是False
立即返回并且没有任何问题的迹象。