16 lines
423 B
Python
16 lines
423 B
Python
import re
|
|
|
|
_PREFIX_PATTERN = re.compile(
|
|
r"^(?:(?:re|fw|fwd)\s*(?:\[\d+\])?\s*:\s*)+",
|
|
flags=re.IGNORECASE,
|
|
)
|
|
|
|
|
|
def normalize_subject(subject: str | None) -> str:
|
|
value = (subject or "").strip()
|
|
while True:
|
|
next_value = _PREFIX_PATTERN.sub("", value, count=1).strip()
|
|
if next_value == value:
|
|
break
|
|
value = next_value
|
|
return re.sub(r"\s+", " ", value).strip().lower()
|