I have done some research and believe that the problem is indeed that there is no non-greedy matching used and so it will search the entire value even after a match is found. The correct term would be to make the regex matching
lazy
Try using it like this:
((\}\{\\field\\fldpriv)([.\s\S]*?)FORMCHECKBOX([.\s\S]*?)(\{\\fldrslt \}\}))
A great tool to test this can be found
here