You can capture everything before the ending >
and put it back, before the insertion of role=button
:
<(button(?![^>]+role).*?)>
This captures everything in the tag.
Replace by:
<$1 role="button">
The $1
contains what the first regex captured.
See the updated regexr.