Natchy, I work for an address verification company called SmartyStreets: and parsing street addresses is our area of expertise. I'll reinforce what pkananen and Mark have said in that this is far beyond the capabilities of regular expressions and anyway -- data privacy aside -- your current approach is less effective than others.
The USPS authorizes certain vendors of address parsers to use their official data and return certified results, specifically, "CASS-Certified." Usually CASS is associated with mailings, but extends well into the realm of what you need to do. There are APIs (for point-of-entry stuff) and batch services (like uploading a list) that will validate and componentize an address.
When an address is broken into components, it's very easy to use only the pieces you actually need. You'll also verify that the address exists, is complete, accurate, and will serve your purposes.
For example, on LiveAddress' API page (which you can use as a springboard for your own research), you can see how it works and, from the docs, that you can pick and choose which pieces of the addresses you'll want to display or store. (Funny thing! Our default sample address on that page is also Google's address in Mountain View, CA.)
If you have any further questions about parsing addresses, I'll be happy to personally help you.