def regex_findall(self, find, flags, replace, extractions, literal=False, sel=None): """Findall with regex.""" regions = [] offset = 0 if sel is not None: offset = sel.begin() bfr = self.view.substr(sublime.Region(offset, sel.end())) else: bfr = self.view.substr(sublime.Region(0, self.view.size())) flags |= re.MULTILINE if literal: find = re.escape(find) if self.extend and not literal: pattern = bre.compile_search(find, flags) self.template = bre.compile_replace(pattern, replace) else: pattern = re.compile(find, flags) for m in pattern.finditer(bfr): regions.append(sublime.Region(offset + m.start(0), offset + m.end(0))) if self.plugin is not None: extractions.append(self.on_replace(m)) else: extractions.append(self.expand(m, replace)) return regions
def apply_scope_regex(self, string, re_find, replace, greedy_replace, multi): """Apply regex on a scope.""" replaced = 0 extraction = string scope_repl = ScopeRepl(self.plugin, replace, self.expand, self.on_replace) if self.extend: pattern = bre.compile_search(re_find) self.template = bre.compile_replace(pattern, replace) else: pattern = re.compile(re_find) if multi and not self.find_only and self.action is None: extraction, replaced = self.apply_multi_pass_scope_regex( pattern, extraction, scope_repl.repl, greedy_replace ) else: if greedy_replace: extraction, replaced = pattern.subn(scope_repl.repl, string) else: extraction, replaced = pattern.subn(scope_repl.repl, string, 1) return extraction, replaced