字符串模式查找字符

时间:2014-05-06 23:08:00

标签: c#

我的文本文件格式是这样的;

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

3 个答案:

答案 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

我希望这会有所帮助。