C # Regex помощь с escape-символом - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь соответствовать ниже:

String RTFContent1 = @"\\htmlrtf {{\\*\\bkmkstart MyLink}\\htmlrtf0 \\htmlrtf {\\*\\bkmkend MyLink}}\\htmlrtf0 \r\n{\\*\\htmltag92 </a>}\r\n{\\*\\htmltag84 <a href=\sip: 3333@mySIPDomain.com\>}\\htmlrtf {\\field{\\*\\fldinst{HYPERLINK \sip:3333@mySIPDomain.com\}}";
String RTFContent2 = @"\\htmlrtf {{\\*\\bkmkstart MyLink}\\htmlrtf0 \\htmlrtf {\\*\\bkmkend MyLink}}\\htmlrtf0 \r\n{\\*\\htmltag92 </a>}\r\n{\\*\\htmltag84 <a href=\http://www.google.com\>}\\htmlrtf {\\field{\\*\\fldinst{HYPERLINK \http://www.google.com\}}";
String MyLink = "MyLink";

Regex regex = new Regex("bkmkstart.*" + MyLink + @".*?HYPERLINK.*?(\w+:[^\s\\]+)");
MatchCollection matches = regex.Matches(RTFContent1);
if (matches.Count == 0) -> Always true!!!

Когда я использую https://regex101.com/ для проверки регулярного выражения, все работает отлично, за исключением того факта, что регулярное выражение C # удвоило обратную косую черту:

// Working Regex
bkmkstart.*MyLink.*?HYPERLINK.*?(\w+:[^\s\\]+)
// C# Regex with no match
bkmkstart.*MyLink.*?HYPERLINK.*?(\\w+:[^\\s\\\\]+)

Тест здесь: https://regex101.com/r/tZJGLE/2

Любая вторая пара глаз, смотрящая на это, будет оценена.

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Хорошо, проблема была связана с тем фактом, что сгенерированная строка содержит \ r \ n char, которые интерпретируются в зависимости от того, как строка загружена.Решение состояло в том, чтобы включить Singlelineoption, чтобы избежать их:

Regex regex = new Regex("bkmkstart.*" + MyLink + @".*?HYPERLINK.*?(\w+:[^\s\\]+)", RegexOptions.Singleline);
0 голосов
/ 06 марта 2019

При использовании строкового литерала необходимо удваивать кавычки.

String RTFContent1 = @"\\htmlrtf {{\\*\\bkmkstart MyLink}\\htmlrtf0 \\htmlrtf {\\*\\bkmkend MyLink}}\\htmlrtf0 \r\n{\\*\\htmltag92 </a>}\r\n{\\*\\htmltag84 <a href=\""sip:3333@mySIPDomain.com\"">}\\htmlrtf {\\field{\\*\\fldinst{HYPERLINK \""sip:3333@mySIPDomain.com\""}}";

String RTFContent2 = @"\\htmlrtf {{\\*\\bkmkstart MyLink}\\htmlrtf0 \\htmlrtf {\\*\\bkmkend MyLink}}\\htmlrtf0 \r\n{\\*\\htmltag92 </a>}\r\n{\\*\\htmltag84 <a href=\""http://www.google.com\"">}\\htmlrtf {\\field{\\*\\fldinst{HYPERLINK \""http://www.google.com\""}}";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...