我试图从下面的字符串中提取!
。
我遇到MTQ0ODQ3NjcyNDoxNDQ4NDc2NzI0OjE6LTM4OTc1OTc2MjM4MDc1OTM2NjY6MTQ0ODQ3NjAwMzowOjA6NTQw
(反斜杠)字符的问题。我如何在C#中逃避这些。是否有任何文档显示需要在正则表达式模式中转义的字符,以及如何转义它们?
\\
我试过以下无济于事。我试图避免完全逃脱反斜杠:
first_cursor\\":\\"MTQ0ODQ3NjcyNDoxNDQ4NDc2NzI0OjE6LTM4OTc1OTc2MjM4MDc1OTM2NjY6MTQ0ODQ3NjAwMzowOjA6NTQw\\"
非常感谢任何帮助。
答案 0 :(得分:1)
在C#中,字符串中的每个反斜杠都可以写为\\\\
。
您可以使用以下内容:
MatchCollection matches = Regex.Matches(content, "first_cursor\\\\{2}":\\\\{2}"([-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);
}
}
这会给你两场比赛。一个用于第一个,一个用于您正在寻找的字符串。然后你可以迭代匹配,看看它是不是“第一”,那么它应该是你正在寻找的。 p>