Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2021, 19:09   #11
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

справился
Код:
import re

f_text = "варвыарвыначалормивромирвоыарвыконецвапрапврпаврпварпаврав"
txt_mark_start, txt_mark_end = "начало", "конец"
# '^' - начало строки, '$' - конец строки
special_part = re.sub(f'^(.*?){txt_mark_start}(.*?){txt_mark_end}(.*?)$', r'\g<2>', f_text, re.I | re.DOTALL)
print(special_part)
Ципихович Эндрю вне форума Ответить с цитированием
Старый 15.02.2021, 19:25   #12
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

на этом примере ответ верный, а на реальном у меня в программе не сделало замен, подскажите, в чём я ошибаюсь? спс
Ципихович Эндрю вне форума Ответить с цитированием
Старый 15.02.2021, 19:39   #13
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Ну значит реальный пример не подходит под заданный регэксп. Без самого примера трудно что-то предположить.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.02.2021, 19:53   #14
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

подсказали:
Код:
special_part = re.search(f'(?is){txt_mark_start}(.*?){txt_mark_end}', f_text, re.I).group(1)
не подскажите, что за зверь: (?is)? почему в скобках? спс
Ципихович Эндрю вне форума Ответить с цитированием
Старый 15.02.2021, 20:09   #15
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Если судить по документации re, то это способ задать флаги прямо в самой регулярке, и буквы соответствуют флагам re.I (ignore case), re.S (dot matches all).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.02.2021, 20:57   #16
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

спасибо
Ципихович Эндрю вне форума Ответить с цитированием
Старый 16.02.2021, 15:16   #17
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

здравствуйте и снова проблема
Код:
special_part = re.sub('\n\(.*?\)\n', '\n', special_part)
хотел удалять-менять на абзац, например
Код:
special_part = "(в ред. Федерального закона от 26.07.2017 N 203-ФЗ)"
не удалилось, в чём я ошибаюсь? спс
Ципихович Эндрю вне форума Ответить с цитированием
Старый 16.02.2021, 19:43   #18
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Значит в реальном тексте нет переносов строк на нужном месте.
Код:
import re
special_part = "\n(в ред. Федерального закона от 26.07.2017 N 203-ФЗ)\n"
special_part = re.sub('\n\(.*?\)\n', '\n', special_part)
print(special_part)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.02.2021, 14:42   #19
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

подскажите, как будет, найти
в тексте - f_text
игнорируя регистр re.I
оглавление - '\nоглавление\n' - начало поиска
конец поиска строка с первым знаком chr(9702) - прозрачный маркер списка
пробовал
Код:
ogl = re.search(f'(?is)\nоглавление\n(.*?){chr(9702)}', f_text).group(1)
не получилось, спс
Ципихович Эндрю вне форума Ответить с цитированием
Старый 25.02.2021, 14:47   #20
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,039
По умолчанию

в оглавлении могут встречаться строки без маркеров, например
Общая часть Особенная часть
Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
конец поиска строка с первым знаком chr(9702)
поэтому конец поиска ПОСЛЕДНЯЯ строка с первым знаком chr(9702), спс
Ципихович Эндрю вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замены программно Ципихович Эндрю Фриланс 10 18.03.2018 05:56
Метод замены V_I_P Общие вопросы C/C++ 1 12.11.2013 02:01
Замены Igorec Общие вопросы C/C++ 2 22.02.2010 20:15
Макрос пакетной замены swan1976 Microsoft Office Word 2 26.12.2009 17:48