/
dayekb
/
vibecoding_gost_citations
Обзор
Документация
Войти
/
dayekb
/
vibecoding_gost_citations
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
debug_patterns.py
80 строк
3 KB
dayekb
upload files
25 сен 2025, 18:49
25 сен 2025, 18:49
4964e9a
Код
Авторство
О чём код?
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Отладка паттернов поиска цитат """ import re def test_patterns(): """Тест паттернов""" print("=" * 60) print("ОТЛАДКА ПАТТЕРНОВ") print("=" * 60) # Тестовые строки test_strings = [ "1. Иванов И.И. Старые методы анализа. М., 2018. С. 15.", "2. Петров П.П. Современные подходы. СПб., 2021. С. 25.", "3. Сидоров С.С. Новые технологии. М., 2022. С. 35.", "4. Козлов К.К. Актуальные исследования. М., 2023. С. 45.", "5. Морозов М.М. Последние разработки. М., 2024. С. 55.", ] # Паттерны patterns = [ (r'^\s*\d+\.\s+[^.]+\d{4}[^.]*\.', "Паттерн 5: Номер + год"), (r'^\s*\d+\.\s+[А-ЯЁA-Z][а-яёa-z]+\s+[А-ЯЁA-Z]\.\s*[А-ЯЁA-Z]\.\s+[^.]+\d{4}[^.]*\.', "Паттерн 7: Полный формат"), (r'^\s*\d+\.\s+[А-ЯЁ][а-яё]+\s+[А-ЯЁ]\.\s*[А-ЯЁ]\.\s+[^.]+\d{4}[^.]*\.', "Паттерн 7 (русский)"), ] for i, text in enumerate(test_strings, 1): print(f"\n{i}. {text}") for pattern, description in patterns: matches = re.findall(pattern, text, re.MULTILINE) if matches: print(f" ✓ {description}: найдено") else: print(f" ✗ {description}: не найдено") # Проверяем год year_matches = re.findall(r'\d{4}', text) print(f" Годы: {year_matches}") def test_multiline(): """Тест многострочного поиска""" print("\n" + "=" * 60) print("ТЕСТ МНОГОСТРОЧНОГО ПОИСКА") print("=" * 60) text = """ Современные исследования показывают важность новых методов [1, с. 15]. Старые работы также имеют значение [2, с. 25]. Список литературы: 1. Иванов И.И. Старые методы анализа. М., 2018. С. 15. 2. Петров П.П. Современные подходы. СПб., 2021. С. 25. 3. Сидоров С.С. Новые технологии. М., 2022. С. 35. 4. Козлов К.К. Актуальные исследования. М., 2023. С. 45. 5. Морозов М.М. Последние разработки. М., 2024. С. 55. """ # Простой паттерн для списка литературы pattern = r'^\s*\d+\.\s+[^.]+\d{4}[^.]*\.' print("Поиск с флагом MULTILINE:") matches = re.findall(pattern, text, re.MULTILINE) print(f"Найдено совпадений: {len(matches)}") for i, match in enumerate(matches, 1): print(f"{i}. {match}") print("\nПоиск без флага MULTILINE:") matches = re.findall(pattern, text) print(f"Найдено совпадений: {len(matches)}") for i, match in enumerate(matches, 1): print(f"{i}. {match}") if __name__ == "__main__": test_patterns() test_multiline()