""" Moduł do ekstrakcji cech opartych na wyrażeniach regularnych. Odpowiedzialny za wykrywanie i zliczanie predefiniowanych wzorców, takich jak dane osobowe i wrażliwe (PII), numery identyfikacyjne, daty, adresy e-mail i inne specyficzne formaty. """ from typing import Dict from ..constants import PII_REGEX_PATTERNS def calculate_all_regex_features(text: str) -> Dict[str, int]: """ Przeszukuje tekst w poszukiwaniu wszystkich zdefiniowanych wzorców i zlicza ich wystąpienia, zachowując zgodność z oryginalnym zestawem cech. Args: text (str): Tekst do analizy. Returns: Dict[str, int]: Słownik, w którym klucze to nazwy wzorców (np. 'email_reg'), a wartości to liczba znalezionych dopasowań. """ if not text: # Zwracamy słownik z zerami dla wszystkich kluczy, które by powstały. # Usuwamy 'domestic_phone_reg', bo nie jest to cecha końcowa. original_keys = [k for k in PII_REGEX_PATTERNS.keys() if k != 'domestic_phone_reg'] return {name: 0 for name in original_keys} features = {} # Przechodzimy przez wszystkie prekompilowane wzorce for name, pattern in PII_REGEX_PATTERNS.items(): try: matches = pattern.findall(text) features[name] = len(matches) except Exception as e: print(f"Błąd podczas przetwarzania wzorca '{name}': {e}") features[name] = 0 # Odtworzenie oryginalnej logiki: suma telefonów jest przypisana do 'phone_reg' # a 'domestic_phone_reg' nie jest cechą końcową. if 'phone_reg' in features and 'domestic_phone_reg' in features: features['phone_reg'] += features['domestic_phone_reg'] # Usuwamy klucz pomocniczy, aby nie pojawił się w wynikach końcowych. del features['domestic_phone_reg'] return features