繁体   English   中英

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

[英]Extracting content from text files with generic rules

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

基本上,该应用执行以下操作:

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

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

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

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

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

"value1, value2, value3"

有没有更简单的替代正则表达式? 有人已经实现了这样的东西吗?

我还可以想象,我正在从错误的角度解决问题,比如强迫简单的用户编写数据提取规则。 在这种情况下,问题将转换为更通用的名称,例如“如何构建一个允许非常简单的用户从单独的文本中提取数据的应用程序?”

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

档案内容:

"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的一个是DelimitedClassBuilder

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

我已经通过将规则定义为正则表达式解决了该问题。 在定义了规则之后,我定义了一个包装规则集,使用户更易于阅读。

例如 从一行中提取一个值

Maximum amount of Sheet Drawing Force= 35.659695[kN]

我定义了正则表达式

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM