# Check if multiple strings exist in another string

`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).