Помогите с регуляркой на C#!

Есть регулярка, вот она:

(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})<script type=\"text\/javascript\">document\.write\(\"<font class=\w*>:<\\\/font>\"\+\(\w*\^\w*\)\+\(\w*\^\w*\)\+\(\w*\^\w*\)\+\(\w*\^\w*\)\)<\/script><font class=\"\w*\">:<\/font>(\w*)<\/font

Когда я её засунул в VS, нажав кнопку Escape pasted text?, у меня получилась такая регулярка:

(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})<script type=\\\"text\\/javascript\\\">document\\.write\\(\\\"<font class=\\w*>:<\\\\\\/font>\\\"\\+\\(\\w*\\^\\w*\\)\\+\\(\\w*\\^\\w*\\)\\+\\(\\w*\\^\\w*\\)\\+\\(\\w*\\^\\w*\\)\\)<\\/script><font class=\\\"\\w*\\\">:<\\/font>(\\w*)<\\/font

В тестере всё отлично работало, но в коде первый вариант падал с нераспознанная escape-последовательность, а второй не находил не одного Match...
Поэтому обращаюсь за помощью)


Ответы (1 шт):

Автор решения: aepot

Вам поможет verbatim string literal

string pattern = @"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})<script type=\""text\/javascript\"">document\.write\(\""<font class=\w*>:<\\\/font>\""\+\(\w*\^\w*\)\+\(\w*\^\w*\)\+\(\w*\^\w*\)\+\(\w*\^\w*\)\)<\/script><font class=\""\w*\"">:<\/font>(\w*)<\/font";

Экранирование кавычек здесь делается через двойные кавычки "", остальное не надо экранировать.


А то что Base64 не раскодировать в C# - впервые слышу.

string base64 = "0JzQndCe0JPQniDQotCQ0JrQmNClINCt0JvQldCc0JXQndCi0J7Qkiwg0J3QlSDQntCU0JjQnSE=";
string text = Encoding.UTF8.GetString(Convert.FromBase64String(base64));
Console.WriteLine(text);

Вывод

МНОГО ТАКИХ ЭЛЕМЕНТОВ, НЕ ОДИН!
→ Ссылка