Попробуйте этот шаблон:
<div\s+class="(?!table_(left|right))[^"]+"
, который не будет соответствовать:
<div class="table_left">
<div class="table_right">
, но будет соответствовать:
<div class="table_clear">
<div class="foo">
РЕДАКТИРОВАТЬ
HT писал:
Мне нужно сопоставлять только те классы, которые начинаются с таблицы, но не справа или слева
А, ладно, это будет выглядеть так:
<div\s+class="table_(?!left|right)[^"]+"
или
<div\s+class="table(?!_left|_right)[^"]+"
, как вы уже нашли себя (но я включил его в свой ответ дляради полноты).
Краткое объяснение модели <div\s+class="table_(?!left|right)[^"]+"
:
<div # match '<div'
\s+ # match one ore more space chars
class="table_(?!left|right) # match 'class="table_' only if it is not followed by 'left' or 'right'
[^"]+ # match one or more characters other than '"'
" # match a '"'