Maybe there is a knot in my head, but I would expect that
StringMatchQ["IP1", "IP"]
should return True (which it does not) just as
StringFreeQ["IP1", "IP"]
returns False (which it does). What am I missing?
Answer
StringMatchQ tests the pattern, and "IP1" doesn't match the pattern "IP", it does match the pattern ___~~"IP"~~___, but that's a different pattern! Similarly you could write your pattern as StringMatchQ["IP1", "IP*"]
StringFreeQ however doesn't just test the entire string, it tests every substring, so in effect the ___~~pattern~~___ is added by the function itself to your pattern.
Comments
Post a Comment