Probably a common extraction problem for beginners

Look at these 2 different ways rows are represented i the html:
"...
<td class="c2 n"><span class="neg">-0,33%</span></td>
<td class="c3 o n"><span class="neg">-0,50</span></td>
..."

"...
<td class="c2 n">-</td>
<td class="c3 o n">-</td>
..."

I would like to extract "-0,33%" and "-0,50" in the first example and "-" and "-" in the second example.

The span-tags is of course what creates trouble for me. Until a solution is found, I must now choose to get
correct data for the first example but null on the second, or I get correct in second example but must include
the span-tags in data extracted in the first example.

There are multiple occurrences of both types of rows in the page.

It is not a problem to fix this later in my program that use the data, but I assume this is such a common
issue that a simpler solution may exist.

And btw, the span-tags come in 3 different classes:
<span class="neg">
<span class="flat">
<span class="pos">

UPDATE - solved it myself

<td class="c2 n">~@ignore1@~~@MOVEMENT_PERCENT@~~@ignore2@~</td>
<td class="c3 o n">~@ignore1@~~@MOVEMENT@~~@ignore2@~</td>

regex for ignore1: (<span class="\w*">)?
regex for ignore2: (</span>)?

It was the parentheses in the regexes that finally made it work for me. Tried many variants without those...suppose I should spend
some more time learning regex...