Build a trie of all patterns, compute failure links (the multi-pattern KMP prefix function) by BFS, then scan the text following goto/failure transitions and firing matches via output links.
he inside she) are all reported. See junior.md and professional.md for the construction and the proof that the scan is O(n + z).