Tag: 文本解析

使用Dictionary 在C#中进行解析

我是编程新手,一直在努力解析文件。 我,最初试图以某种方式解析它,但这并没有最终正常工作。 我想在Dictionary 中解析以下行。 网卡:已安装7个NIC。 [01]: Broadcom Connection Name: Local Area Connection DHCP Enabled: No IP address(es) [01]: abc.de.xyz. [02]: Broadcom Connection Name: eth1 Status: Media disconnected [03]: Broadcom Connection Name: eth0 Status: Media disconnected [04]: Broadcom Connection Name: eth3 Status: Media disconnected [05]: Mellanox Connection Name: Local Area Connection 5 Status: Hardware not present […]

从任意纯文本中提取特定标记

我想解析纯文本注释并查找其中的某些标记。 我正在寻找的标签类型如下: 其中“name”是[az]字符串(来自固定列表),“1234”表示[0-9] +数字。 这些标记可以在字符串中出现零次或多次,并被任意其他文本包围。 例如,以下字符串都是有效的: “Hello world!” “!” “1 < 2” “++ and also.\n\nBy the way, maybe ” 以下字符串均无效: “1 < 2" "” “” “Hello ” 最后一个无效,因为“notinfixedlist”不是受支持的命名标识符。 我可以使用简单的正则表达式轻松解析它,例如(为简单起见,我省略了命名组): 或直接指定固定列表: 但是我想使用antlr有几个原因: 我想要任何与该格式不匹配的结果导致解析错误,因此如果文本包含“”但与模式不匹配,则失败。 必须将这些字符转义为“&lt;” 和“&gt;” 分别如果它不是标签。 我可能会在将来扩展它以支持其他类型的模式(例如:“{foo + 666}”或“[[@ 1234]]”并且希望避免爆发正则表达式语句。拥有单个语法文件我可以延伸会很棒。 我喜欢这样的事实:antlr4实现了访问者模式,当遇到特定类型的标记时我的代码被调用,而不是必须破解不同的正则表达式。 如何使用antlr4实现这样的语法? 我见过的大多数例子都是针对整个文本的精确规则的语言,而我只希望语法适用于任意文本中的匹配模式。 我想出了这个,我认为是正确的: grammar Tags; parse : ( tag | text )* ; tag : […]

字符串解析,提取数字和字母

解析字符串并提取数字和字母的最简单方法是什么? 我的字符串可以是以下格式(数字|字母或字母|数字),即“10A”,“B5”,“C10”,“1G”等。 我需要提取2个部分,即“10A” – >“10”和“A”。 更新:感谢大家提供的所有优秀答案

从字符串中获取所有数字的最佳方法

有没有更好的方法来获取一个字符串,如“(123)455-2344”并从中得到“1234552344”而不是这样做: var matches = Regex.Matches(input, @”[0-9]+”, RegexOptions.Compiled); return String.Join(string.Empty, matches.Cast() .Select(x => x.Value).ToArray()); 也许一个正则表达式模式可以在一场比赛中做到这一点? 我似乎无法创造一个来实现这一目标。

我该如何检测文本文件中使用的分隔符?

我需要能够解析CSV和TSV文件。 我不能依赖用户知道差异,所以我想避免要求用户选择类型。 有没有一种简单的方法来检测正在使用哪个分隔符? 一种方法是读取每一行并计算制表符和逗号,并找出每行中最常用的。 当然,数据可能包括逗号或标签,因此说起来容易做起来难。 编辑:这个项目的另一个有趣的方面是,当我阅读它时,我还需要检测文件的模式,因为它可能是众多文件中的一个。 这意味着在解析之前我不知道有多少个字段。