Снять скобки с регулярным выражением в C # - PullRequest
4 голосов
/ 06 февраля 2009

Я хочу удалить квадратные скобки из строки SQL, но только там, где внутри них нет пробелов.

например. «SELECT [intId], [The Description]» должен вернуть «SELECT intId, [The Description]».

Я могу получить квадратные скобки без пробелов внутри с помощью регулярного выражения:

\[[^\s]*\]

Как убрать квадратные скобки из этих совпадений в исходной строке?

Ответы [ 2 ]

6 голосов
/ 06 февраля 2009
sql = Regex.Replace(sql, "\\[([^\\s]*)\\]", "$1");
3 голосов
/ 06 февраля 2009

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

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

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