【发布时间】:2019-02-27 15:43:32
【问题描述】:
我有以下带有很多类似文本模式的文本文件(inputFile.txt):
Example1 - Should be Removed (original file contains a lot of similar parts)
Event Number (#)
string2
string3
string4
Example2 -Should NOT be Removed
Event Number (#)
string2
string3
string4
string5
Example3 - Should NOT be Removed
Event Number (#)
AnyText
string2
string3
string4
使用以下表达式,我可以映射必要的示例(第一个)。 不幸的是,我不知道如何使用 C# 从文本文件中删除此文本。
Event number\n(^\s*$)\n(.*)\n(^\s*$)\n(.*)\n(^\s*$)\n(.*)\n(^\s*$)
分析数据示例: https://gist.github.com/SeregaVRS/0d47e84607e5dc1b8e954c2c2cc50fad
您可以使用https://regex101.com 了解更多我想使用正则表达式删除的内容
我想清理文件的其他词删除未使用的示例:
要删除的格式:
Event Number (#)
{Empty String}
string2
{Empty String}
string3
{Empty String}
string4
{Empty String}
不应受到影响的示例:
Event Number (#)
{Empty String}
string2
{Empty String}
string3
{Empty String}
string4
string5
我遇到的大多数示例都与单行正则表达式匹配有关。
您知道如何使用 C# 代码从整个文件中删除/替换未使用的文本吗?
应该是这样的:
- 读取输入文件(下例)
- 使用 C# 根据正则表达式删除/替换文本 - 如何执行此操作?
-
保存输出(无示例1)
string regexForEmptyNotes = @"string\n?(.*)\n(^\s*$)\n(.*)\n(^\s*$)\n(.*)\n(^\s*$)\n(.*)\n(^\s*$)"; var fileLines = File.ReadLines(inputFileName, Encoding.Default); // Something should happened in this place :) Regex.Replace("Expected string as an input but not strings collection", regexForEmptyNotes, string.Empty); File.WriteAllLines(outputFileName, fileLines, Encoding.UTF8);
预期的输出结果.txt
Example2 -Should NOT be Removed
Event Number (#)
string2
string3
string4
string5
Example3 - Should NOT be Removed
Event Number (#)
AnyText
string2
string3
string4
输出文件应仅包含 Example2 和 Example3。 不幸的是,我应该按原样保存格式,因此无法使用将文件中的所有文本转换为 1 个长字符串的版本。
抱歉解释不清楚。
【问题讨论】:
-
从你的问题中不清楚你想做什么。请重新阅读并至少添加预期结果。
-
你的例子有点不清楚。如果您显示一个 实际 示例文件内容的代码块,然后显示另一个具有预期结果的代码块,将会更有帮助。你说你有以下文本文件,然后显示一个代码块,其中包含像
ExampleX这样的字符串。那是文件的一部分吗?是什么决定了一段相关文本? “未使用的文本”是什么意思? -
暂时以“不清楚”为由否决,更新后请评论,我会删除!
-
更新并添加示例
-
所以文件实际上包含像
"Example3 - Should NOT be Removed"这样的字符串?这就是定义一个文本区域以与其他文本进行比较的原因吗?问题是,您如何在文件中定义文本区域,以便将它们相互比较。很难判断您给出的示例是否是实际文本文件内容。