balancing reluctant and greedy matching
<p>I am trying to match the two address lines below (mostly fictional addresses):
</p>

<pre class="lang-none prettyprint-override"><code>2320 ZINER CIR East 43123
1111 ZINER CIR East Bernstadt 43123
</code></pre>

<p>My regular expression is built using names of cities, and East Bernstadt is a city name. However, streets can also end in "East". My predicament then is that if I greedy match "East", as in:</p>

<pre class="lang-none prettyprint-override"><code>\d+ [^ ]+ CIR( East)?( East Bernstadt)?(?: \d+)?
</code></pre>

<p>...then only the fist line is matched (the other is a partial match). If I use a reluctant match, as in:</p>

<pre class="lang-none prettyprint-override"><code>\d+ [^ ]+ CIR( East)??( East Bernstadt)?(?: \d+)?
</code></pre>

<p>...the second line matches but not the first.</p>

<p>How can I change the regular expression so that both lines are matched completely? "East" and "East Bernstadt" must remain in separate parts of the expression.</p>

<p><em>EDIT:</em> I cannot treat "East" and "East Bernstadt" with one parenthesis group; both expressions above must match, but also "1234 Ziner CIR East East Bernstadt" must match as well (some streets have cardinal directions on them).</p>