思いついたのをそのまま書いたらすげー長くなってしまった
((?<=[()XY])data|data(?=[()XY])|(?<=[()XY])data(?=[()XY]))

一番上のdataも含めるなら
((?<=[()XY])data|data(?=[()XY])|(?<=[()XY])data(?=[()XY])|^data$)

追記はよくわからん