に問題を持っていない:機能を証明することは全く正しい入力検証
私はこの人工的な例の機能を持っている:単語のリストを受け取り、動的に適切にすることなく、正規表現パターンを構築
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
または(a+)+
のようにハングアップする機能を強制的にいくつかの「悪」の正規表現を試してみたが、機能はちょうど即座False
を返し、問題の兆候はありません。
常に* "true" を返します空の文字列(何でも言い換えれ)*。 –