[英]Regex to match a 28 character ID string with special characters
我有一个小应用程序,可以读取另一个应用程序制作的一些日志文件。 在这些文件中,正在处理类似于以下内容的行:
ban added reason='Posting links to malware websites' cluid='oNNtrNGo6kdxNRshT8MiHlq4wR8=' bantime=0 by client 'Someone'(id:4)
目前,我有一点Regex \\w{27}=
可以获取该字符串中的线索值。 线索的长度始终为27个字符,结尾处带有'='。 但是,其中一些ID本身具有特殊字符,例如: IVz0tUZThCdbBnCWjf+axoMqVTM=
(注意'+'字符)这意味着我的正则表达式与此ID不匹配。
我需要在正则表达式中添加什么才能使其与两个ID匹配?
您只对线索的值感兴趣(介于单引号之间)。 您可以尝试以下模式:
"cluid='([^']{27}=)'"
它捕获了不是单引号的27个字符(假设单引号不能是值的一部分),然后捕获到捕获组1中的等号。
例:
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
string line1 = "ban added reason='Posting links to malware websites' cluid='oNNtrNGo6kdxNRshT8MiHlq4wR8=' bantime=0 by client 'Someone'(id:4)";
Match m = Regex.Match(line1, "cluid='([^']{27}=)'");
if (m.Success)
{
Console.WriteLine(m.Groups[1]);
}
string line2 = "ban added reason='Posting links to malware websites' cluid='IVz0tUZThCdbBnCWjf+axoMqVTM=' bantime=0 by client 'Someone'(id:4)";
m = Regex.Match(line2, "cluid='([^']{27}=)'");
if (m.Success)
{
Console.WriteLine(m.Groups[1]);
}
}
}
结果:
oNNtrNGo6kdxNRshT8MiHlq4wR8=
IVz0tUZThCdbBnCWjf+axoMqVTM=
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.