Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
26 / 17 / 9
Регистрация: 25.02.2021
Сообщений: 59

Разделение строки на элементы (с использованием регулярных выражений)

12.12.2021, 22:17. Показов 1054. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
Подскажите, пожалуйста, как разделить следующую строку с использованием регулярных выражений
Python
1
( Alfa [ Charlie Delta ( Bravo [ Echo ( Foxtrot Golf ) ] ) ] )
, чтобы после применения команды re.findall
был список из всех возможных выражений в скобках:
Python
1
[ ( 'Alfa [ Charlie Delta ( Bravo [ Echo ( Foxtrot Golf ) ] ) ] )',  '[ Charlie Delta ( Bravo [ Echo ( Foxtrot Golf ) ] ) ]', '( Bravo [ Echo ( Foxtrot Golf ) ] )', '[ Echo ( Foxtrot Golf ) ]' , '( Foxtrot Golf )']
.
Мой нерабочий вариант:
Python
1
\(.+\)|\[.+\]
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2021, 22:17
Ответы с готовыми решениями:

Извлечение предложений из строки с использованием регулярных выражений
Промаялся весь вечер, облазил весь msdn, уже не знаю что делать. В общем, нужно разбить строку на предложения. Шаблон, написанный мною,...

Выбор части строки с использованием регулярных выражений
Допустим есть три строки: start1 Строка один start2 Строка два start3 Строка три Как сделать при помощи регулярных...

Вырезать значения из строки с использованием регулярных выражений
Всем доброго времени суток! Возникла такая проблема: не получается вырезать значения из, ну например, вот такого текста: <variable...

6
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
12.12.2021, 22:34
Лучший ответ Сообщение было отмечено erastfandorin как решение

Решение

Цитата Сообщение от erastfandorin Посмотреть сообщение
чтобы после применения команды re.findall
был список из всех возможных выражений в скобках
Это нереально
1
26 / 17 / 9
Регистрация: 25.02.2021
Сообщений: 59
12.12.2021, 22:41  [ТС]
iSmokeJC, Эх, а во мне теплилась надежда) Спасибо! Буду решать с помощью питона)
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
13.12.2021, 07:19
iSmokeJC, а если рекурсия + регулярки ?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
13.12.2021, 08:07
eaa, это будет лютейший костыль и притягивание за уши. И это с учетом обычной вложенности скобок. А при, например, [ (..) (...) ] - будет вообще адъ.
0
26 / 17 / 9
Регистрация: 25.02.2021
Сообщений: 59
14.12.2021, 23:56  [ТС]
iSmokeJC, В общем, решил я задачу, зашел с противоположного края, если так можно сказать. Я, конечно, погорячился, если бы Вы мне не написали, что это нереально, я бы наверное долго пытался что-то сделать именно в этом направлении)) Но регулярные выражения я все-таки использовал.
А задача была следующая. Необходимо рассчитать сопротивление в цепи: даны резисторы, для каждого из них известно сопротивление в Ом. Если скобки квадратные - резисторы расположены параллельно, т.е. сопротивление надо считать 1/(1/x + 1/y), если скобки круглые - резисторы расположены последовательно, т.е. сопротивление равно сумме x+y.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import re
d={'Alfa':1 , 'Bravo': 1, 'Charlie': 12, 'Delta': 4, 'Echo': 2, 'Foxtrot': 10, 'Golf': 8}
x='( Alfa [ Charlie Delta ( Bravo [ Echo ( Foxtrot Golf ) ] ) ] )'
 
# все ключи меняем на значения в заданной цепи
for k, v in d.items():
    x=x.replace(k, str(v))
# функция для расчета сопротивления параллельных резисторов
def func(k):
    return 1/float(k)    
 
# последовательный расчет сопротивления
while len(x.split())>3:
    y=re.findall(r'\[[\s\d.+]+\]|\([\s\d.+]+\)',x)
    for i in y:
        if '(' in i:
            result=sum(map(float, i.split()[1:-1]))
            x=x.replace(i, str(result))
        elif '[' in i:
            numb=i.split()[1:-1]
            result=1/sum(map(func, numb))
            x=x.replace(i, str(result))
 
print(round(float(x),1))
2
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.12.2021, 00:01
Цитата Сообщение от erastfandorin
решил я задачу, зашел с противоположного края
Молодец, уважаю
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2021, 00:01
Помогаю со студенческими работами здесь

Программа с использованием регулярных выражений
Доброго времени суток! Такое задание: задан код программы в файле(любой код на любом языке, где есть оператор while), нужно найти в этом...

Выборка из бд с использованием регулярных выражений
использую следующую функцию выборки: var search = lb.Historys.Where(p => p.book == searchstring); return search.ToList();...

Экранирование с использованием регулярных выражений
Подскажите пожалуйста: у меня есть файл в формате json. В нем есть куски текста на укр. языке. Внутри текста попадаются слова обрамленные...

фильтрование с использованием регулярных выражений
Добрый день недавно начал осваивать регулярные выражения и уже освоил что такое метасимволы и символьные классы и чем они отличаются от...

Поиск с использованием регулярных выражений
Добрый день, уважаемые форумчане! Очень нужен совет.. Нижеизложенный код позволяет искать в базе данных по введенному условию, название...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru