# -*- coding: utf-8 -*-
import re

# Función para reemplazar texto usando expresiones regulares
def replace_text(find_text, replace_text, is_regex=False):
    text = editor.getText()
    if is_regex:
        new_text = re.sub(find_text, replace_text, text)
    else:
        new_text = text.replace(find_text, replace_text)
    editor.setText(new_text)

# Función para eliminar líneas duplicadas de manera eficiente
def remove_duplicates():
    lines_seen = set()
    lines = editor.getText().splitlines()
    unique_lines = [line for line in lines if line not in lines_seen and not lines_seen.add(line)]
    editor.setText("\n".join(unique_lines))
    print("{} líneas duplicadas eliminadas.".format(len(lines) - len(unique_lines)))

# Función para conservar líneas con coincidencias de patrones
def keep_matching_lines(patterns, is_regex=False):
    text = editor.getText()
    lines = text.splitlines()
    compiled_patterns = [re.compile(pattern) if is_regex else re.compile(re.escape(pattern)) for pattern in patterns]

    matching_lines = []
    for line in lines:
        for regex in compiled_patterns:
            if regex.search(line):
                matching_lines.append(line)
                break  # Dejar de buscar en otros patrones si ya hemos encontrado una coincidencia

    editor.setText("\n".join(matching_lines))
    print("{} líneas conservadas con los patrones proporcionados.".format(len(matching_lines)))

# Reemplazar espacios por dos puntos
replace_text(" ", ":")

# Reemplazar con expresión regular (eliminar la primera parte)
replace_text(r"(.+):(.+):(.+)", r"\2:\3", is_regex=True)

# Eliminar líneas duplicadas
remove_duplicates()

# Lista de patrones a buscar y conservar
patterns = [
    r"(?<!\S)[\w\.-]+@[\w\.-]+\.\w+:[^\s]+",  # Nuevo patrón
    "unknown",
    "https://",
    "http://",
    "//",
    "/:"
]

# Conservar líneas para cada patrón
keep_matching_lines(patterns, is_regex=True)
Back to Top