2015-01-07 3 views
-1

У меня есть шаблон регулярного выражения и хотел бы использовать символ @ перед строкой, чтобы вам не нужно было скрывать символы escape регулярных выражений. Когда я пытаюсь, я продолжаю получать ошибку компиляции: «В заявлении могут использоваться только назначение, вызов, приращение, декремент и новые объектные выражения». Я уверен, что мне нужно удалить escape-символы, которые у меня есть в моей строке, прежде чем я смогу использовать @. Однако я не могу заставить его работать. Может кто-то помочь получить шаблон строки ниже, чтобы использовать @ в начале.Reformat регулярное выражение как строка строки строки #

^\\s*\\{(\\s*,?\\s*\\\"([^\"]*)\\\"\\s*:\\s*\\\"([^\"]*)\\\")*\\}\\s*$ 
+0

mybe можно сделать это: в разных средах hve разные правила начала/конца маркеров. где вы хотите использовать регулярное выражение. – Jasen

+0

визуальная студия с использованием C# – AMicrosoftVictim

+0

Вам нужно показать образец того, что вы пробовали, чтобы кто-то мог помочь вам с разрешением ошибки, которую вы видите. –

ответ

1

Так у вас есть регулярное выражение, которое было написано на языке, как 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*$" 
+1

Спасибо Алан. Это работает. – AMicrosoftVictim

Смежные вопросы