(?:(id = \d+)[^{}]*?(value="[^"\r\n]*")|(value="[^"\r\n]*")[^{}]*?(id = \d+))
будет соответствовать всем парам id / значение
Объяснение:
(?:
(id = \d+) # group 1, id
[^{}]*? # 0 or more any character but curly braces
(value="[^"\r\n]*") # group 2, value
| # OR
(value="[^"\r\n]*") # group 3, value
[^{}]*? # 0 or more any character but curly braces
(id = \d+) # group 4, id
)
Демо