C # String Формат заполнителей в регулярных выражениях - PullRequest
6 голосов
/ 23 марта 2009

У меня есть регулярное выражение, определенное в дословном строковом типе C #, например:

private static string importFileRegex = @"^{0}(\d{4})[W|S]\.(csv|cur)";

Первые 3 буквы сразу после начала строки регулярного выражения (^) могут быть одной из многих возможных комбинаций буквенных символов.

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

string regex = String.Format(importFileRegex, "ABC");

Что даст мне регулярное выражение ^ABC(\d{4})[W|S]\.(csv|cur)

Проблема в том, что когда я делаю String.Format, потому что у меня есть другие фигурные скобки в строке (например, \d{4}), String.Format ищет что-то для вставки, не может найти его и выдает ошибку :

System.FormatException : Index (zero based) must be greater than or equal to zero and less than the size of the argument list.

Кто-нибудь знает, как, если не разделять строки, я могу избежать других фигурных скобок или чего-то другого, чтобы избежать вышеуказанной ошибки?

1 Ответ

10 голосов
/ 23 марта 2009

Попробуйте это (обратите внимание на двойные фигурные скобки):

@"^{0}(\d{{4}})[W|S]\.(csv|cur)"

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