C# 将匹配的正则表达式模式写回输入

C# 将匹配的正则表达式模式写回输入,c#,regex,C#,Regex,因此,我使用了一个List YAMLFileLines=newlist()存储文本文件的行,如下所示 while ((FileLine = r.ReadLine()) != null) { YAMLFileLines.Add(FileLine); } 现在,稍后我将使用正则表达式模式评估每一行,如下所示: foreach (string Incoming_Line in YAMLFileLines) { string pattern = @"([\#-]+) { prop: (

因此,我使用了一个
List YAMLFileLines=newlist()
存储文本文件的行,如下所示

while ((FileLine = r.ReadLine()) != null)
{
    YAMLFileLines.Add(FileLine);
}
现在,稍后我将使用正则表达式模式评估每一行,如下所示:

foreach (string Incoming_Line in YAMLFileLines)
{
    string pattern = @"([\#-]+) { prop: ([a-z A-Z _]+), value: ([0-9 a-z A-Z \[ \] \= \"" \, \. \/ ]+) }";
    Match Line_Match = Regex.Match(Incoming_Line, pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);

    if (Line_Match.Success)
    {
        string HashValue = Line_Match.Groups[1].Value; // Stpres the   #- or   just   - value
        string VarieName = Line_Match.Groups[2].Value; // Stores the   Srv_Port   paramater
        string VariValue = Line_Match.Groups[3].Value; // Stores the   30000   value

        bool KeepOriginalHash = false; // Force this to false for now

        switch (VarieName)
        {
            case "Srv_Port":
            {
                if (KeepOriginalHash == true)
                {
                    string FileLine = HashValue + " { prop: " + VarieName + ", value: " + textBox_Srv_Port.Text + " }"; // Allow #- or - at start of string
                    WriteFileLines.Add(FileLine);
                }
                else if (KeepOriginalHash == false)
                {
                    string FileLine = "- { prop: " + VarieName + ", value: " + textBox_Srv_Port.Text + " }"; // Remove #- from start of string. All Unlocked
                    WriteFileLines.Add(FileLine);
                }

                break;
            }
        }
    }
}   
我所做的是为匹配文本文件中变量名的匹配组之一创建一个开关盒。然后,我想使用一个textBox.Text表单将值放入行中,并将其写回一个新列表
WriteFileLines.Add(FileLine)现在我的示例确实可以工作了,但问题是我必须准确地指定要写回新列表的内容,例如,这一行
-{prop:“+VarieName+”,value:“+textBox\u Srv\u Port.Text+”}
将以
-{prop:Srv\u Port,value:30000}结束
列表WriteFileLines=new List();
中,问题是它会从传入文本文件行中的行中删除注释,该行可能看起来像
-“{prop:Srv_Port,value:52386}建议的端口范围在49152-65535之间
我不希望丢失任何读入文件行中的任何内容。我只想将一个模式与3个组匹配,然后更改其中一个组的值,并将整行内容再次写入一个新列表

总结。我想逐行将文本文件读入列表对象。下面是一个文本文件行示例

- { prop: Srv_Port, value: 52386 } #Recommended port range between 49152 - 65535
我想匹配3个组根据其他组的状态更改其中一个组的值,然后将读入的整行写回新的列表对象


我看过regex.Replace,但是在我看到的所有示例中,它似乎只给出了模式替换的结果。而不是包含更改的整行。

在正则表达式末尾附加另一个子模式
(.*)
,它将是您的
行匹配。组[4].Value
您将附加到每个修改的行中。@WiktorStribiżew您能否给出一个我正在努力掌握如何实现它的示例。试试。@WiktorStribiżew我完全误解了您的意思。然而,使用一个额外的匹配组来捕获该行的其余部分,而不管其内容如何,这一想法从未出现在脑海中。我将尝试并实现它,看看它是如何工作的。谢谢你的意见。@RyanWalkowski嘿!你能找到一个有效的解决方案吗?