Exclude qoutes inside the quoted parts:
teststring.scan(/(\d) x "[^"]+"/)
Alternatively, use non-greedy match:
teststring.scan(/(\d) x ".+?"/)
Also, consider using a quantifier for the digits to support more than one digit.
teststring.scan(/(\d+) x "[^"]+"/)