RegEx模式字符串中的转义字符
本文关键字:转义字符 字符串 模式 RegEx | 更新日期: 2023-09-27 18:24:40
我正试图从下面的字符串中提取MTQ0ODQ3NjcyNDoxNDQ4NDc2NzI0OjE6LTM4OTc1OTc2MjM4MDc1OTM2NjY6MTQ0ODQ3NjAwMzowOjA6NTQw
。
我对''
(反斜杠)字符有问题。如何在C#中逃离这些。是否有任何文档显示regex模式中需要转义的字符,以及如何转义它们?
first_cursor''":''"MTQ0ODQ3NjcyNDoxNDQ4NDc2NzI0OjE6LTM4OTc1OTc2MjM4MDc1OTM2NjY6MTQ0ODQ3NjAwMzowOjA6NTQw''"
我试过以下几种,但都没有用。我尽量避免必须完全转义反斜杠:
MatchCollection matches = Regex.Matches(content, "first_cursor*.quot;([-0-9A-Za-z]+)");
任何帮助都将不胜感激。
在C#中,字符串中的每个反斜杠都可以写成''''
。
您可以使用以下内容:
MatchCollection matches = Regex.Matches(content, "first_cursor''''{2}":''''{2}"([-0-9A-Za-z]+)");
在C#中编写RegEx字符串时,我更喜欢使用逐字逐句的字符串文字:
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'
";
您可以使用前瞻来淘汰一些竞争者:
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);
}
}
这会给你两场比赛。一个用于第一个,一个用于您要查找的字符串。然后你可以迭代匹配,看看它是否不是"第一个",那么它应该是你想要的。