解析规则文件,c# regex看不到模式
本文关键字:regex 看不到 模式 规则 文件 | 更新日期: 2023-09-27 17:54:41
我已经从python中取出了我的正则表达式,并尝试在c#中工作,虽然我没有得到错误,但它不显示任何输出,并且在调试期间,我没有看到输出变量填充任何数据,以下是代码片段:
StringWriter strwriter = new StringWriter();
rule = sr.ReadLine();
do
{
Regex action = new Regex(@"^#'w+(?<action>(alert)''s+(tcp|udp)''s+(.*?)''('*}))");
Regex message = new Regex("(?<msg>[''s(]*''((.*)'')[^)]*$)", RegexOptions.IgnorePatternWhitespace);
Regex content = new Regex("(?<content>[''s(]*''((.*)'')[^)]*$)", RegexOptions.IgnorePatternWhitespace);
Match result = action.Match(rule);
//String repl = Regex.Replace(rule, "['';]", ",");
//Match mat = action.Match(repl);
Console.WriteLine(result.Groups["action"].Value);
//writer.WriteLine(result.Groups["action"].Value + "," + result.Groups["msg"].Value + "," + result.Groups["content"].Value + "," + result.Groups["flow"].Value + "," + result.Groups["ct"].Value + "," + result.Groups["pcre"].Value + "," + result.Groups["sid"].Value);
} while (rule != null);
结果不显示任何东西,我错过了什么,这些几乎与我在python脚本中工作的相同。
由于第一个正则表达式使用的是字符串,所以不要进行双转义!
^#'w+(?<action>(alert)''s+(tcp|udp)''s+(.*?)''('*}))
^ ^ ^
=>
^#'w+(?<action>(alert)'s+(tcp|udp)'s+(.*?)'('*}))
对于输入,正则表达式有更多的错误,这一个应该带你到正确的方向:
^#'s*(?<action>alert's+(?:tcp|udp)'s+(.*?)'([^)]*'))
regex101演示如果不需要括号内的部分,可以省略最后一部分:
^#'s*(?<action>alert's+(?:tcp|udp)'s+(.*?)'()