The pattern "{.*?}" means "curly brace followed by the shortest possible string, followed by the close curly brace".
If you are using a regular expression matcher that doesn't understand greedy and non-greedy ("*" is greedy, "*?" is non-greedy), you can use a pattern like "{[^}]*}" which means "curly brace followed by zero or more characters other than a close curly brace, followed by a close curly brace".
Note that this is not foolproof -- if you have closing curly braces as part of a definition this will break. The only way around that is to use a real .css parser.
If you want to capture the data between the curly braces you'll want to add parenthesis surrounding the part of the pattern inside the curly braces, eg: "{(.*?)}", which will capture everything except the curly braces.