Parsing different types of formats with regular expressions in PHP
===

I need to parse (split) some sentences in my DB with some specific requirement.
These sentences can have different type of formats, 80% of my sentences have one of the following formats:

 1. COMPANY_NAME, CITY_NAME_1 (STREET_ADDRESS, ZIP_CODE CITY_NAME_2). ANY_STRING
 2. COMPANY_NAME, CITY_NAME_1, STREET_ADDRESS, ZIP_CODE CITY_NAME_2. ANY_STRING
 3. COMPANY_NAME, CITY_NAME_1, STREET_ADDRESS, ZIP_CODE CITY_NAME_2, (ANY_STRING: ANY_STRING.). ANY_STRING
 4. COMPANY_NAME (ANY_STRING), CITY_NAME_1, STREET_ADDRESS, ZIP_CODE CITY_NAME_2. ANY_STRING

Here, I have specified the rules:

 - COMPANY_NAME can have spaces, hyphons (-), dots.
 - COMPANY_NAME can not have comma, breakets
 - CITY_NAME_1 and CITY_NAME_2 can have space, slashes, breakets
 - CITY_NAME_1 and CITY_NAME_2 can not have comma
 - CITY_NAME_1 and CITY_NAME_2 are same in 95% of cases but they are
   different in 5% of cases
 - STREET_ADDRESS can have anything (comma, breaket, any special
   charcter etc.)
 - ZIP_CODE is already known to me (A 4 or 5 or 6 digit numeric string).


I have already zip code of each sentence is with me. And I want to create regular expressions or function which will take sentence and zip code as input and return street name as output. 

Of cource I can create the functions for each of the above method differently. But, how can I know that given sentence fits to which format? Is it possible to know this with regular expression?