diff --git a/lib/zest.js b/lib/zest.js
index <HASH>..<HASH> 100644
--- a/lib/zest.js
+++ b/lib/zest.js
@@ -523,9 +523,10 @@ var rules = {
   combinator: /^(?: +([^ \w*]) +|( )+|([^ \w*]))(?! *$)/,
   attr: /^\[([\w\-]+)(?:([^\w]?=)(inside))?\]/,
   pseudo: /^(:[\w\-]+)(?:\((inside)\))?/,
-  inside: /(?:"(?:\\"|[^"])*"|'(?:\\'|[^'])*'|<[^"'>]*>|\\["'>]|[^"'>])+/
+  inside: /(?:"(?:\\"|[^"])*"|'(?:\\'|[^'])*'|<[^"'>]*>|\\["'>]|[^"'>])*/
 };
 
+rules.inside = replace(rules.inside, '[^"\'>]*', rules.inside);
 rules.attr = replace(rules.attr, 'inside', makeInside('\\[', '\\]'));
 rules.pseudo = replace(rules.pseudo, 'inside', makeInside('\\(', '\\)'));
 rules.simple = replace(rules.simple, 'pseudo', rules.pseudo);
allow 3 levels of nesting in selectors