我的文本文件格式是这样的;
ID: 300000000 NAME: 3rd: Ellin Forest: Altaire Camp
ID: 300000100 NAME: 3rd: Altaire Camp: Small Forest
ID: 687000000 NAME: Gacha_GL: Gacha: Gachapon
ID: 682000000 NAME: HalloweenGL: Phantom Forest: Haunted House
答案 0 :(得分:3)
在正则表达式中包含缓冲区部分:
ID: (?<id>\d*) NAME: (?<buffer>.*?:) (?<name>.*)
答案 1 :(得分:1)
string name = match.Groups["name"].Value; // "Gacha_GL: Gacha: Gachapon";
string correctName = String.Join(": ", name.Split(new[]{": "}, StringSplitOptions.None).Skip(1).ToArray());
不是正则表达式,但可以胜任。
答案 2 :(得分:0)
您可以修改Regex
直接通过
string pattern = @"ID: (?<id>\d*) NAME:(?<prename>.*?:)(?<name>.*)";
但我不确定您是否需要来使用原始Regex
,在这种情况下,您可以执行此操作而不会破坏现有Regex
,如下所示
void PopulateWith(string rawText)
{
string pattern = @"ID: (?<id>\d*) NAME: (?<name>.*)";
foreach (Match match in Regex.Matches(rawText, pattern))
{
int id = int.Parse(match.Groups["id"].Value);
string name = match.Groups["name"].Value;
name = String.Join(": ",
name.Split(new[]{": "}, StringSplitOptions.None).Skip(1).ToArray());
}
}
这两个都根据需要产生输出:
Gacha:Gachapon
我希望这会有所帮助。