C# 匹配行尾或其他字符
我正在尝试编写一个正则表达式,它可以匹配“key=value”,直到行尾或者一个表示注释开始的符号 例如,让“#”表示注释,并假设我有一个包含以下内容的文件: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”(?:^ |)(?您的正则表达式除了最后一个点外都很
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();
}