                                   substringWithRangeAtIndex(result, str: str, at: 3).replacingOccurrences(of: "[\'\"](.*)[\'\"]", with: "$1", options: .regularExpression, range: nil))
 
         if skip {
-            str = str.substring(from: str.characters.index(str.startIndex, offsetBy: result.range.length))
+            str = String(str[str.index(str.startIndex, offsetBy: result.range.length)..<str.endIndex])
         }
         
         switch expr {

    } else if let result = matchPseudo(str) {
        let one = substringWithRangeAtIndex(result, str: str, at: 1)
        if skip {
            str = str.substring(from: str.characters.index(str.startIndex, offsetBy: result.range.length))
        }
        
        switch one {

            var combinator: String = ""
            
            if let result = matchBlank(str) {
                str = String(str[str.index(str.startIndex, offsetBy: result.range.length)..<str.endIndex])
            }
            
            // element
