C# 匹配行尾或其他字符

C# 匹配行尾或其他字符,c#,regex,C#,Regex,我正在尝试编写一个正则表达式,它可以匹配“key=value”,直到行尾或者一个表示注释开始的符号 例如,让“#”表示注释,并假设我有一个包含以下内容的文件: k1 = v1 k2 = v2 # this is a comment k3 = v3 然后我希望我的表达式与“k1=v1”、“k2=v2”和“k3=v3”匹配 我已经能够使用以下工具匹配没有注释的文本: ^(?'key'.+)\=(?'value'.+) 问题是在“#”或“\n”(?:^ |)(?您的正则表达式除了最后一个点外都很

我正在尝试编写一个正则表达式,它可以匹配“key=value”,直到行尾或者一个表示注释开始的符号

例如,让“#”表示注释,并假设我有一个包含以下内容的文件:

k1 = v1 
k2 = v2 # this is a comment
k3 = v3
然后我希望我的表达式与“k1=v1”、“k2=v2”和“k3=v3”匹配

我已经能够使用以下工具匹配没有注释的文本:

^(?'key'.+)\=(?'value'.+)

问题是在“#”或“\n”

(?:^ |)(?您的正则表达式除了最后一个点外都很好之前,我无法找出如何匹配

^(?'key'.+)\=(?'value'[^#\n]+)
如果将其替换为否定字符类[^#\n],则它将正常工作

此外,如果键值对位于同一文件中(与逐行相反),则应启用多行模式,允许^match在每行开头

在C#中,这变成了

var subjectString = @"k1 = v1 
k2 = v2 # this is a comment
k3 = v3";

Regex regexObj = new Regex(@"^(?'key'.+)\=(?'value'[^#\n]+)", RegexOptions.Multiline);
Match matchResult = regexObj.Match(subjectString);
while (matchResult.Success)
{
    Console.WriteLine(matchResult.Groups["key"].Value);
    Console.WriteLine(matchResult.Groups["value"].Value);
    matchResult = matchResult.NextMatch();
}

@Tushar根本不寻找评论或新行。
var subjectString = @"k1 = v1 
k2 = v2 # this is a comment
k3 = v3";

Regex regexObj = new Regex(@"^(?'key'.+)\=(?'value'[^#\n]+)", RegexOptions.Multiline);
Match matchResult = regexObj.Match(subjectString);
while (matchResult.Success)
{
    Console.WriteLine(matchResult.Groups["key"].Value);
    Console.WriteLine(matchResult.Groups["value"].Value);
    matchResult = matchResult.NextMatch();
}