Так у вас есть регулярное выражение, которое было написано на языке, как C или Java, которые не имеют регулярные выражения литералов или дружественное квотирование механизма (например, сырые строки языка Python), и вы хотите, чтобы включить его в C# программы, используя дословный строковый литерал, чтобы избавиться от лишних обратных косых черт. Я уверен, что вы знаете, что C# по-прежнему поддерживают котировки в старом стиле, так что вы можете использовать регулярные выражения, как это:
"^\\s*\\{(\\s*,?\\s*\\\"([^\"]*)\\\"\\s*:\\s*\\\"([^\"]*)\\\")*\\}\\s*$"
Но вот как дословная строка:
@"^\s*\{(\s*,?\s*\""([^""]*)\""\s*:\s*\""([^""]*)\"")*\}\s*$"
Это было создано RegexBuddy, кстати. Я вставил в первую строку (с кавычками), сказал, что она появилась из Java-программы, и она избавилась от закрывающих котировок и дополнительных обратных косых черт. Затем я сказал, что копирую его в программу на C#, поэтому он добавил новые кавычки (@"..."
) и удвоил кавычки внутри регулярного выражения. И это наименьшее из того, что может сделать RB - очень рекомендуется!
То, что он не сделал, это избавиться от дополнительной обратной косой черты перед внутренними кавычками. То есть, он верно преобразован \\\"
в \""
. Это неверно, но символ цитаты не имеет особого значения внутри регулярного выражения, поэтому обратная косая черта не нужна. Вот как я бы это написал:
@"^\s*\{(\s*,?\s*""([^""]*)""\s*:\s*""([^""]*)"")*\}\s*$"
mybe можно сделать это: в разных средах hve разные правила начала/конца маркеров. где вы хотите использовать регулярное выражение. – Jasen
визуальная студия с использованием C# – AMicrosoftVictim
Вам нужно показать образец того, что вы пробовали, чтобы кто-то мог помочь вам с разрешением ошибки, которую вы видите. –