C# 解析此文本的其他方法?使用尽可能少的代码

C# 解析此文本的其他方法?使用尽可能少的代码,c#,parsing,C#,Parsing,我有这个文本,我想解析它以获得这些人的名字。 最简单的解析方法是什么?是否有一些工具/语言或C语言的扩展允许我捕捉这种结构 我知道我可以在C#中使用一些Split,但我想听听各位专家的意见,用另一种方式,更动态、更流畅地使用它 如果可能,结果可以是一个类,包含国家列表、函数列表、名称列表,也可以是一个结构化的动态/扩展对象 Country, Goleiros [list of names] Defensores [list of nam

我有这个文本,我想解析它以获得这些人的名字。 最简单的解析方法是什么?是否有一些工具/语言或C语言的扩展允许我捕捉这种结构


我知道我可以在C#中使用一些Split,但我想听听各位专家的意见,用另一种方式,更动态、更流畅地使用它

如果可能,结果可以是一个类,包含国家列表、函数列表、名称列表,也可以是一个结构化的动态/扩展对象

 Country,
     Goleiros 
         [list of names]
     Defensores
         [list of names]
巴西

戈莱罗斯:胡里奥·塞萨尔(多伦多足球俱乐部),杰斐逊(博塔福戈·布拉)e 维克托(米内罗大西洋酒店)

防守球员:蒂亚戈·席尔瓦(巴黎圣日耳曼FRA),大卫·路易斯 (切尔西荷兰队)、但丁(拜仁慕尼黑啤酒队)、亨里克(那不勒斯意大利队), 丹尼尔·阿尔维斯(巴塞罗那ESP)、麦孔(罗马ITA)、马塞洛(皇家马德里) 马德里ESP)e麦克斯韦(巴黎圣日耳曼FRA)

Meio campistas:Luiz Gustavo(沃尔夫斯堡啤酒),Paulinho (托特纳姆荷兰队)、拉米雷斯(切尔西荷兰队)、费尔南迪尼奥(曼彻斯特队) 曼城(荷兰),赫尔南斯(国际米兰),奥斯卡(切尔西荷兰)e 威利安(切尔西-荷兰)

阿塔坎特斯:绿巨人(泽尼特鲁斯)、伯纳德(顿涅茨克矿工工会)、弗雷德 (弗鲁米内斯文胸),Jô(大西洋文胸)e内马尔(巴塞罗那ESP)

Técnico:Luiz Felipe Scolari(文胸)

克罗西亚

Goleiros:Stipe Pletikosa(罗斯托夫罗斯),Danijel Subasic(摩纳哥FRA)e Oliver Zelenika(萨格勒布洛科莫蒂夫铁路公司)

辩护人:Darijo Srna(顿涅茨克矿工联合会)、Domagoj Vida(迪纳莫) 基辅大学、西梅·弗萨尔伊科大学(热那亚大学)、伊万·斯特里尼克大学(德尼普罗大学), Danijel Pranjic(Panatihnaikos GRE),Vedran Corluka(Lokomotiv Moscou RUS)、Dejan Lovren(荷兰南安普敦)、Gordon Schindelfeld (Panathinaikos GRE)e Igor Bubnjic(乌迪内斯伊塔)

梅奥·坎皮斯塔斯:卢卡·莫德里奇(皇家马德里ESP)、伊万·拉基蒂奇 (塞维利亚ESP)、马特奥·科瓦西奇(国际米兰)、尼科·克拉尼查尔 皇后公园游骑兵队(ING)、马塞洛·布罗佐维奇(萨格勒布迪纳莫CRO)、奥格恩 武科耶维奇(基辅大学迪纳莫分校)、米兰·巴德尔吉(汉堡啤酒)、伊万 莫西尼语(Rijeka CRO)、马里奥·帕萨利克语(Hajduk Split CRO)和萨米尔语 (格塔菲ESP)

阿塔坎特斯:马里奥·曼祖基奇(拜仁市政啤酒),尼卡·耶拉维奇 (赫尔城ING)、伊维卡·奥利奇(沃尔夫斯堡艾尔)、爱德华多·达席尔瓦 (顿涅茨克矿工联合会)、杜耶警察局(萨格勒布迪纳莫CRO)、伊沃·伊利切维奇 (汉堡啤酒)、伊万·佩里西奇(沃尔夫斯堡啤酒)和安特雷比奇 (佛罗伦萨)

Técnico:Niko Kovac(首席执行官)

您可以使用正则表达式

选择:或之后和之前的所有内容(

更新:

C#库为您提供了一种匹配字符串的方法。我可以想象您希望使用这种方法


它将返回一个字符串列表,您可以对其进行迭代,或者使用string.join将所有字符串压缩成一行。

如果您为测试的结构定义了规则,这将有所帮助。因此:

定义您的数据结构-看起来它可以基于以下内容,其中球员类别由position.player name和club name组成

public class myFootballData
{
    public string CountryName
    public List<Players>
}
公共类myFootballData
{
公共字符串国家名称
公开名单
}
  • 逐行处理数据,遍历数据文件或字符串。如果是字符串,则将其拆分为换行上的数组
  • 如果一行为空,则忽略
  • 如果一行没有冒号或括号,那么它将用国家名称启动一个新的myFootBall对象
  • 将以下非国家行拆分为:{然后{给出职位、姓名和俱乐部

这是一个指向解决方案的指针,不是一个完全有效的解决方案。仍然需要您的输入才能完成。

您可以尝试使用正则表达式捕获冒号/逗号和括号之间的文本,其中包含惰性量词,如

[:|,](.*?)[(].*?[)]

这应该让您开始。

您希望如何解析数据?解析后的数据是什么样子的(例如,类、另一个文本文件等)?此外,您不需要发布整个文本文档,只需发布一个代表性的示例,就可以让我们看到格式。请不要将整个文本放在这里,使用一个段落左右,然后将其余部分放在PasteBin或类似文件中。这样说,您可能会遇到一些自然语言处理(NLP)问题。你不需要发布全文,也不需要发布你尝试了什么以及你是如何被卡住的?我知道我可以使用C#中的一些拆分,但我想听听你的专家们的另一种方法。首先展示你自己的努力。最后的玩家名用“e”分隔,而不是“a”因此,它由
或'e'分隔。太模糊了,不会提示要填充的结构