Использование regex_replace в выражении в квадратных скобках

Gal: небольшая программа на C++ для преобразования вывода Maple в корректный математический ввод.

Проблема: выражения в квадратных скобках, как в следующем примере: sin (-1 / (- 1 + x) / x) должен стать sin [-1 / (- 1 + x) / x]

Как видите, нужно заменить только скобки для самой функции sin. Есть ли способ сделать это, не касаясь внутреннего содержимого скобок, используя regex_replace ()? Сам не мог придумать.

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

Заранее спасибо!

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

sandwood 02.05.2018 15:12

Очень жаль, что в примере есть 2 выражения, ни одно из которых не заключено в квадратные скобки правильно!

High Performance Mark 02.05.2018 15:27

Похоже, он хочет использовать C++ в качестве промежуточного процессора. Quesion может потребоваться пояснение. В любом случае смотрите здесь mathematica.stackexchange.com/q/163184/2079 и mathematica.stackexchange.com/q/31804/2079

agentp 02.05.2018 16:25
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
64
1

Ответы 1

Если у вас есть выходные данные Maple, потому что вы генерируете их в Maple, то, возможно, вы можете одновременно сгенерировать желаемый результат.

Трудно сделать его более применимым к вашей более широкой цели с помощью всего лишь одного краткого примера.

Использование одинарных правых кавычек и одноуровневых вызовов eval предназначено для предотвращения нежелательной оценки (например, Maple вытащил бы ведущий знак минус из вызова sin в противном случае).

ee := 'sin'(-1/(-1+x)/x):

lprint( eval(ee,1) );    
  sin(-1/(-1+x)/x)

ff := subsindets(eval(ee,1),specfunc(sin),u->'Sin'[op(u)]):

lprint( eval(ff,1) );                                      
  Sin[-1/(-1+x)/x]

sprintf("%a", eval(ff,1) );

           "Sin[-1/(-1+x)/x]"

Или, если ваш оригинал представляет собой строку, а не неоцененный вызов функции,

restart;

s: = "sin(-1/(-1+x)/x)";

        s := "sin(-1/(-1+x)/x)"

gg:=parse(s):

lprint( eval(gg,1) );
  sin(-1/(-1+x)/x)

ff := subsindets(eval(gg,1),specfunc(sin),u->'Sin'[op(u)]):

lprint( eval(ff,1) );
  Sin[-1/(-1+x)/x]

sprintf("%a", eval(ff,1) );

          "Sin[-1/(-1+x)/x]"

Другие вопросы по теме