Я понятия не имею, чего вы пытаетесь достичь, но, возможно, ваша проблема в том, что \w
будет включать _
(а \W
исключит его).
Может быть, попробовать это:
/(?<![a-z])surface(?![a-z])/iu
Или это:
/(?<=[\W_])surface(?=[\W_])/iu
В противном случае, предоставьте более подробную информацию о том, что именно вы делаете / не хотите соответствовать.
Обновление: с учетом этой информации:
поверхность2010 не должна совпадать
В таком случае, я подозреваю, что вы хотите:
/(?<=\b|_)surface(?=\b|_)/iu
(поскольку только \b
исключает совпадение, содержащее "... and_surface_Tare ...", поэтому мы добавляем чередование с _
, чтобы включить это.)