使用通用规则从文本文件中提取内容

本文关键字:提取 文件 文本 规则 | 更新日期: 2023-09-27 18:27:19

我有很多不同结构的文本数据。我需要根据一些基于文本的规则提取这些文本的部分内容。我会使用正则表达式,但不幸的是,使用该应用程序的人从未听说过它。

基本上,该应用程序会做以下事情:

  1. 将数据加载到文本框中
  2. 将输出的结构作为一组简单的规则键入另一个文本框
  3. 在第三个文本框中接收结果

数据结构示例(我有兆字节的数据):

Label1: value1, measurement
Label2; value2; something else
Nr, value3 (comment)
...

我需要一些其他方法来代替正则表达式。它可以非常简单,因为我只需要每行中的一个值。

从上面的例子中,我必须获得以下结构:

"value1, value2, value3"

有没有比regex更简单的替代方案?有人已经实现了这样的东西吗?

我还可以想象,我是从错误的角度来处理这个问题的,比如强迫简单的用户编写数据提取规则。在这种情况下,问题被转化为更通用的东西,比如"如何构建一个应用程序,让一个非常简单的用户从单独的文本中提取数据?"

编辑:我为他们实现了以下尽可能简单的匹配:

文件内容:

"Strain at break Ax2";"Unknown"
"Strain at break Ax1";"Unknown"
"Strain at break";"Unknown"
"Yield point strain";"Unknown"
"Uniform elongation";25.4087;"%"
"Tensile strength";261.323;"MPa"
"End test phase Yield point";1;"%"
"Maximum tensile force";5.22647;"kN"

图案:

"Tensile strength";(?<value>[^;'n]*);
"Maximum tensile force";(?<value>[^;'n]*);

还是太复杂了。问题是,如果我开始用另一个字符串替换丑陋的部分,以获得例如:

"Tensile strength", [First value after]

我忽略了提取的所有一般性质,因为每个文件看起来都与这个文件不同。

使用通用规则从文本文件中提取内容

查看FileHelpers库。它允许在运行时生成文件布局,我认为在您的示例中会有所帮助的是DelimitedClassBuilder

在您的情况下,我可能会使用FileHelpers将记录定义解析到DelimitedClassBuilder中,然后使用结果来解析您的记录。

我通过将规则定义为正则表达式解决了这个问题。在定义了规则之后,我定义了一个更容易被用户阅读的包装规则集。

Ex。从行中提取值

Maximum amount of Sheet Drawing Force= 35.659695[kN]

我定义了正则表达式

{0}='s*(?<value>[^['n'r]*)

然后让用户定义字段的名称。{0}占位符随后被替换为字段名称和应用的正则表达式。