Should succeed: "*World" matches "Hello World" "*World" matches "World" "Hello*" matches "Hello World" "H[ae]llo?World" matches "Hallo+World" "H[ae]llo?World" matches "Hello_World" "[0-9][!a]" matches "1b" "/a/*/d" matches "/a/b/c/d" "/a/*/d" matches "/a/bc/d" "*hello" matches ".hello" "/*hello" matches "/.hello" "[a!][a!]" matches "!a" "[\]]" matches "]" "[\\]" matches "\" "hello[/+]world" matches "hello/world" "hello world" matches "HELLO WORLD" Should fail: "*World" doesn't match "Hello Potato" "*World" doesn't match "Potato" "H[ae]llo?World" doesn't match "Hillo+World" "H[ae]llo?World" doesn't match "Hello__World" "[0-9][!a]" doesn't match "ab" "[0-9][!a]" doesn't match "2a" "/a/*/d" doesn't match "/a/b/c/d" "/a/*/d" doesn't match "/a/bc/d/" "*hello" doesn't match ".hello" "/*hello" doesn't match "/.hello" "[a!][a!]" doesn't match "ab" "hello[/+]world" doesn't match "hello/world" "hello world" doesn't match "HELLO WORLD"