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

  • Автор темы Автор темы prostors
  • Дата начала Дата начала
а у меня требует экранирования для regexp, поэтому создал тему
Экранируйте отдельным действием, если есть такое нестандартное условие.
Можно через 'Обработка текста - Замена' сделать прямую текстовую замену } на \}.
 
Экранируйте отдельным действием, если есть такое нестандартное условие.
Можно через 'Обработка текста - Замена' сделать прямую текстовую замену } на \}.
а можете добавить, чтобы экранировались все спецсимволы, может быть отдельным действием?
 
а можете добавить, чтобы экранировались все спецсимволы, может быть отдельным действием?
Они и так сейчас по стандарту экранируются.
Если что-то нестандартное нужно, то отдельным действием экранируйте.
 
по стандарту для чего? с#?
мне для sql нужно дополнительное действие где экранируются все спецсимволы
По стандарту регулярных выражений в первую очередь.
Фигурных скобок я пока не вижу в списке спецсимволов для баз данных.

Уточню этот момент у программистов.
 
@prostors Уточнил у программистов. Действие 'Обработка текста - Escape строки' предназначен именно для экранирования спецсимволов при работе запросов и для работы регулярных выражений.

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

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

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

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

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

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

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

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

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

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