Ah - much better. I get what you are asking.
You still have the question: "does string x match pattern y", only in your case you want to find y given x.
Language matches are tricky. There are many peer reviewed papers on the subject. There is the famous Turing test proffered by Alan Turing that has never been passed on even the most basic level. Just ask Siri what zero divided by zero is ^_^
You seem to have an idea of how you want to approach this, and I can see what you are trying to do.
There is only 1 way to test multiple patterns against a string to find which pattern made the match. This would be using pattern groups.
It's complex to explain, but not nearly as complex to implement.
see this link on how regex pattern groups work:
https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.getgroupnames.aspx[
^]
So you would end up with a huge regex pattern a bit like:
string pattern = @".*(?<email>(email address))(?<howru>(how (are|r)\W?(you|u))).*";
</howru></email>
You could probably construct this from a list of regex terms, which would be good. You can then iterate through the matches and check the match group name.
I hope that's enough to get you started. ^_^
Andy