Look here:
http://msdn.microsoft.com/en-us/library/bb546163.aspx[
^]
This sample is using LINQ to Objects, and does exactly what you want. Well not exactly since it is case sensitive, but you can overcome this too with ToUpper. This solution does not take word order in account.
In my opinion regex wouldn't be the right tool, because as I see, you want to dynamically match input words with subject words. So you would need to build regexp also dynamically. And could be complex if word order does not matter. That can be achieved, but if this is a frequent task, it could present big overhead. I would consider regexp only if it is a rarely executed task and the order of the words does matter. But even than a list-to-list matching would consume less resources and would be much faster.