INNER CODE UNIT · Python
_art_regex
lawve-ai/awesome-legal-skills · skills/ktzr-polskie-umowy-gospodarcze-adam-piotrowski/tools/legal-cite/legal_cite/core.py:88
def _art_regex(raw_art: str) -> str:
"""Buduje fragment regex dopasowujący numer artykułu w tekście źródła,
tolerancyjnie na spacje. 385¹→'385\\s+1' (źródło: „Art. 385 1 ."),
36a→'36\\s*a', 45→'45'."""
s = re.sub(r'([¹²³⁴⁵⁶⁷⁸⁹⁰]+)', lambda mm: ' ' + mm.group(1).translate(_SUP), raw_art.strip())
s = re.sub(r'\s*[\[\(\^]\s*(\d+)\s*[\]\)]?', r' \1', s) # [1]/(1)/^1 → " 1"
s = re.sub(r'\s+', ' ', s).strip()
parts = s.split(' ')
if len(parts) == 2 and parts[1].isdigit(): # baza + indeks górny
return rf'{re.escape(parts[0])}\s+{re.escape(parts[1])}'
mlet = re.match(r'^(\d+)([a-zA-Z])$', parts[0])
if mlet: # sufiks literowy 36a
return rf'{mlet.group(1)}\s*{mlet.group(2)}'
return re.escape(parts[0])
def _strip_html(raw_html: str) -> str:
# 1) usuń <script>/<style> WRAZ z treścią — api.sejm.gov.pl wstrzykuje strukturę