detectPii function

List<(String, int, int)> detectPii(
  1. String text
)

Detects likely PII patterns; returns list of (patternName, startIndex, endIndex).

Implementation

List<(String, int, int)> detectPii(String text) {
  final RegExp email = RegExp(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}');
  final RegExp phone = RegExp(r'\b\d{3}[-.\s]?\d{3}[-.\s]?\d{4}\b');
  final List<RegExpMatch> emailMatches = email.allMatches(text).toList();
  final List<RegExpMatch> phoneMatches = phone.allMatches(text).toList();
  final int total = emailMatches.length + phoneMatches.length;
  return List.generate(
    total,
    (int index) {
      if (index < emailMatches.length) {
        final m = emailMatches[index];
        return (_kPiiPatternEmail, m.start, m.end);
      }
      final m = phoneMatches[index - emailMatches.length];
      return (_kPiiPatternPhone, m.start, m.end);
    },
  );
}