С# Регулярное выражение: удалить предыдущие и завершающие двойные кавычки (")

Если у меня есть строка, как показано ниже... что такое регулярное выражение для удаления (необязательных) ведущих и завершающих двойных кавычек? Для дополнительного кредита он также может удалить любое дополнительное пространство вне кавычек:

string input = "\"quoted string\""   -> quoted string
string inputWithWhiteSpace = "  \"quoted string\"    "  => quoted string

(для С# с использованием Regex.Replace)

Ответ 1

Это излишне использовать Regex.Replace для этого. Вместо этого используйте Trim.

string output = input.Trim(' ', '\t', '\n', '\v', '\f', '\r', '"');

И если вы хотите удалить только пробелы вне кавычек, сохранив все, что внутри:

string output = input.Trim().Trim('"');

Ответ 2

Помимо использования регулярного выражения, вы можете просто использовать String.Trim() - гораздо проще читать, понимать и поддерживать.

var result = input.Trim('"', ' ', '\t');

Ответ 3

Замените ^\s*"?|"?\s*$ пустой строкой.

В С# регулярное выражение будет:

string input = "  \"quoted string\"    "l
string pattern = @"^\s*""?|""?\s*$";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, "");
Console.WriteLine(result);

Ответ 4

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

@"^(\s|")+|(\s|")+$"

Ответ 5

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

String pattern = "(\"[^\"]*\"|[^\"\\s]+)(\\s+|$)";