我有一个字符串数据(采用txt文件格式),如下所示。我需要将其提取到一个数组中。 我不擅长RegEx。所以需要你的帮助来确定要使用的表达式。
输入:如下:
TABLENAME {
Type: DEPT;
Items: [
0000=0000
0001=0001
0002=0002
0010=0010
0012=0012
0020=0020
];
}
预期产量: 一个包含2个元素的数组
1. Type:DEPT
2. Items: [
0000=0000
0001=0001
0002=0002
0010=0010
0012=0012
0020=0020
];
第二个元素也应该转换为数组。需要只提取内容bleow然后我可以使用一个简单的string.Split来提取我需要的数据。
0000=0000
0001=0001
0002=0002
0010=0010
0012=0012
0020=0020
有人可以帮忙吗?
答案 0 :(得分:1)
我不确定您要完成的是什么以及为什么要从文本文件中获取此内容。
但听起来你真正需要的是识别该对象中的Type和Items。
这可以使用以下正则表达式完成,但如果您有一些空格/换行符不在当前示例中显示,则可能需要修改它:
\{\n?\s*Type\:\s*(?<Type>\w+);\n?\s*Items\:\s*\[\n*(?<Items>(?:\n?[\s]*[0-9=]+)+)[\n\s]*\];\n}
这将为您提供2个命名组,一个名为Type,另一个名为Items 对于上面的示例,Type将包含DEPT,而Items将包含数字对。 但这可以根据你的例子进行调整。我不确定这会如何变化以及它是否适合您的最终目标。
您可以在regex101或类似网站上使用此功能来调整正则表达式以满足您的需求。 我不确定如何解释正则表达式而不分解它并给你一个很长的解释,所以如果你有任何具体的问题,请告诉我。
编辑:为捕获组添加了表名。将在一个名为TableName的组内。这将不允许表名中的空格。如果你需要空格,如果表名总是在新行上,你可以用[^ \ n]替换[^ \ s]。
(?<TableName>[^\s]+)\s\{\n?\s*Type\:\s*(?<Type>\w+);\n?\s*Items\:\s*\[\n*(?<Items>(?:\n?[\s]*[0-9=]+)+)[\n\s]*\];\n}