在RegEx模式字符串中转义字符

时间:2015-11-25 18:58:26

标签: c# regex

我试图从下面的字符串中提取!

我遇到MTQ0ODQ3NjcyNDoxNDQ4NDc2NzI0OjE6LTM4OTc1OTc2MjM4MDc1OTM2NjY6MTQ0ODQ3NjAwMzowOjA6NTQw(反斜杠)字符的问题。我如何在C#中逃避这些。是否有任何文档显示需要在正则表达式模式中转义的字符,以及如何转义它们?

\\

我试过以下无济于事。我试图避免完全逃脱反斜杠:

first_cursor\\":\\"MTQ0ODQ3NjcyNDoxNDQ4NDc2NzI0OjE6LTM4OTc1OTc2MjM4MDc1OTM2NjY6MTQ0ODQ3NjAwMzowOjA6NTQw\\"

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

在C#中,字符串中的每个反斜杠都可以写为\\\\

您可以使用以下内容:

MatchCollection matches = Regex.Matches(content, "first_cursor\\\\{2}":\\\\{2}&quot([-0-9A-Za-z]+)");

答案 1 :(得分:0)

在C#中编写RegEx字符串时,我更喜欢使用docs

string pattern = @"first_cursor\\\\":\\\\"([-0-9A-Za-z]+)\\\\"";

这可以防止你不得不两次逃避斜杠;一次用于C#,再用于RegEx引擎。

另外,在将字符串存储在字符串中时,此语法也很有用:

string logFile = @"C:\Temp\mylog.txt";

甚至支持SQL命令的多行等等:

string query = @"
    SELECT *
      FROM tblStudents
     WHERE FirstName = 'Bobby'
       AND LastName = 'Tables'
";

答案 2 :(得分:0)

您可以使用前瞻来摧毁一些竞争者:

var example = @"first_cursor\\":\\"MTQ0ODQ3NjcyNDoxNDQ4NDc2NzI0OjE6LTM4OTc1OTc2MjM4MDc1OTM2NjY6MTQ0ODQ3NjAwMzowOjA6NTQw\\"";
var regex = new Regex("(?<!&[-0-9A-Za-z]*)(?<!_[-0-9A-Za-z]*)[-0-9A-Za-z]+");
var matches = regex.Matches(example);
foreach(var match in matches)
{
  if (match.ToString() != "first")
  {
    Console.WriteLine(match);
  }
}

这会给你两场比赛。一个用于第一个,一个用于您正在寻找的字符串。然后你可以迭代匹配,看看它是不是“第一”,那么它应该是你正在寻找的。