Check if multiple strings exist in another string Check if multiple strings exist in another string python python

# Check if multiple strings exist in another string

You can use `any`:

``a_string = "A string is more than its parts!"matches = ["more", "wholesome", "milk"]if any(x in a_string for x in matches):``

Similarly to check if all the strings from the list are found, use `all` instead of `any`.

`any()` is by far the best approach if all you want is `True` or `False`, but if you want to know specifically which string/strings match, you can use a couple things.

If you want the first match (with `False` as a default):

``match = next((x for x in a if x in str), False)``

If you want to get all matches (including duplicates):

``matches = [x for x in a if x in str]``

If you want to get all non-duplicate matches (disregarding order):

``matches = {x for x in a if x in str}``

If you want to get all non-duplicate matches in the right order:

``matches = []for x in a:    if x in str and x not in matches:        matches.append(x)``

You should be careful if the strings in `a` or `str` gets longer. The straightforward solutions take O(S*(A^2)), where `S` is the length of `str` and A is the sum of the lenghts of all strings in `a`. For a faster solution, look at Aho-Corasick algorithm for string matching, which runs in linear time O(S+A).