gpt4 book ai didi

c# - 我想在 C# 中通过正则表达式解析我的脚本文件

转载 作者:太空宇宙 更新时间:2023-11-03 21:47:36 24 4
gpt4 key购买 nike

我有一个像下面这样的脚本文件

[grade]
`[achievement]`

[gold multiple]
250

[level]
34
99

[pre required quest]
38
[/pre required quest]

例如:

lex("grade") return "`[achievement]`"

lex("level") return "34,99"

也许我可以通过 linq 做到这一点,但我找不到办法

我试过了

scripts = File.ReadAllText(scriptFilePath);
string gradeKeyword = @"(?<=\[grade\]\r\n).*?\r\n*(?=\[.*\]\r\n)"
Regex reg = new Regex(gradeKeyword);
Match mat = reg.Match(scripts);

它没有用(我想得到 [achievement])

顺便说一句,我可以通过 linq 做到这一点吗?

最佳答案

您可以尝试不使用正则表达式。

public static IEnumerable<string> GetScriptSection(string file, string section)
{
var startMatch = string.Format("[{0}]", section);
var endMatch = string.Format("[/{0}]", section);
var lines = file.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToList();

int startIndex = lines.FindIndex(f => f == startMatch) + 1;
int endIndex = lines.FindLastIndex(f => f == endMatch);

if(endIndex == -1)
{
endIndex = lines.FindIndex(startIndex, f => f.StartsWith("[") && lines.IndexOf(f) > startIndex);
endIndex = endIndex == -1 ? lines.Count : endIndex;
}

return lines.GetRange(startIndex, endIndex - startIndex).Where(l => !string.IsNullOrWhiteSpace(l)).ToList();
}

但我只会使用 YAML、XML 或其他一些常用的格式,而不是自己滚动。

关于c# - 我想在 C# 中通过正则表达式解析我的脚本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16150329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com