The general approach is to use a negative lookahead:
(I)(((?!\1).)*?) disagree
See demo here.
Notice the group for the word in between is now $2
. If you don't want that, you can repeat the 1st word:
I((?:(?!I).)*?) disagree
But I'd say the first version is easier to maintain, specially if the word is bigger.