Hello Fritz!
Not so easy ...
If you'll find a solution via regular expressions please let me know!
Until then a solution via macro:
repeat(all){
do {
Search("|d|s|s|d",ADVANCE+NOERR)
if (Error_Match){
return
}
Search("|!|d")
} while (Cur_Char == 41)
Save_Pos()
Search("|!|d",REVERSE+COUNT,3)
Char(1)
// ... your stuff
Restore_Pos()
}
HTH
Christian