Until I reached the last part of your question, I though "that's easy - a perfect task for a Regex".
But it isn't. Regex is all about pattern matching, not lexical analysis, which is what you need to accurately match verb, noun, preposition in normal text.
Google for
Lexical Analysis English[
^] instead - but be prepared for some fairly serious reading!