Действие Escape не экранирует закрывающую }

prostors

Client
Регистрация
16.12.2020
Сообщения
1 045
Благодарностей
34
Баллы
48
пример {788448}

127354

в действии Обработка текста
 

Вложения

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 557
Благодарностей
9 177
Баллы
113

prostors

Client
Регистрация
16.12.2020
Сообщения
1 045
Благодарностей
34
Баллы
48

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 557
Благодарностей
9 177
Баллы
113
а у меня требует экранирования для regexp, поэтому создал тему
Экранируйте отдельным действием, если есть такое нестандартное условие.
Можно через 'Обработка текста - Замена' сделать прямую текстовую замену } на \}.
 

prostors

Client
Регистрация
16.12.2020
Сообщения
1 045
Благодарностей
34
Баллы
48
Экранируйте отдельным действием, если есть такое нестандартное условие.
Можно через 'Обработка текста - Замена' сделать прямую текстовую замену } на \}.
а можете добавить, чтобы экранировались все спецсимволы, может быть отдельным действием?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 557
Благодарностей
9 177
Баллы
113
а можете добавить, чтобы экранировались все спецсимволы, может быть отдельным действием?
Они и так сейчас по стандарту экранируются.
Если что-то нестандартное нужно, то отдельным действием экранируйте.
 

prostors

Client
Регистрация
16.12.2020
Сообщения
1 045
Благодарностей
34
Баллы
48

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 557
Благодарностей
9 177
Баллы
113
по стандарту для чего? с#?
мне для sql нужно дополнительное действие где экранируются все спецсимволы
По стандарту регулярных выражений в первую очередь.
Фигурных скобок я пока не вижу в списке спецсимволов для баз данных.

Уточню этот момент у программистов.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 557
Благодарностей
9 177
Баллы
113
@prostors Уточнил у программистов. Действие 'Обработка текста - Escape строки' предназначен именно для экранирования спецсимволов при работе запросов и для работы регулярных выражений.

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

Есть еще информация в нашей Справке, в которой раскрывается суть этого действия.

Оставим ваше предложение, когда будет новое фичевание, рассмотрим предложение, но не как универсальное.

Спасибо за предложение.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 557
Благодарностей
9 177
Баллы
113
Перенес тему из Багтрекера в Предложения.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 557
Благодарностей
9 177
Баллы
113
ЧатДжиПиТи помог рассдедовать и лучше понять эту особенность с закрывающей фигурной скобкой }. :-)

При использовании метода Regex.Escape для строки "{788448}", вы получаете результат "\{788448}", а не "\{788448\}", потому что метод Regex.Escape экранирует только минимальный набор специальных символов, необходимых для корректной интерпретации регулярным выражением.

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

Таким образом, Regex.Escape("{788448}") экранирует только открывающую фигурную скобку, превращая её в \{, а закрывающая скобка остаётся без изменений.

Причина: Метод Regex.Escape экранирует только те специальные символы, которые могут вызвать неоднозначность при парсинге регулярного выражения. Закрывающая фигурная скобка } не требует экранирования, поэтому она остаётся без изменений в результирующей строке.

Ответ: Потому что метод Regex.Escape экранирует только символы, которые могут привести к неоднозначности при разборе регулярного выражения—открывающая фигурная скобка «{» является таким символом и экранируется, а закрывающая «}» не требует экранирования, поэтому остаётся неизменной.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)