2012-03-11 57 views
0

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

基本上应用程序执行以下操作的事:

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

实例(I有这种数据的兆字节):

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] 

我松提取所有的泛用性,因为每个文件看起来与此不同。

+0

你看过LEX吗? – GETah 2012-03-11 11:34:17

+0

_“我会使用正则表达式,但不幸的是使用该应用程序的人从来没有听说过它”_。用户开发者还是你? – 2012-03-11 11:40:48

+0

用户是实验室助理,他们在液压机上工作,绝对没有编程培训。 – Germstorm 2012-03-11 11:45:31

回答

0

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

Ex。从线

Maximum amount of Sheet Drawing Force= 35.659695[kN] 

提取值I所定义的正则表达式

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

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

相关问题