首页 > 解决方案 > LabVIEW 搜索多个字符串

问题描述

我正在尝试使用以下模式在文本日志中搜索多个字符串:

s(n)KEY: some data    
s(n)Measurement: some data    
s(n)Units: some data

其中 s(n) 是变化的空格数。KEY 将在循环中的每次迭代中更改,因为它来自 .ini 文件。作为示例,请参见以下日志片段:

   WHITE On Axis Lum_010      OPTICAL_TEST_01      some.seq
   WHITE On Axis Lum_010      Failed

      Bezel1 Luminance-Light Source: Passed
           Measurement:              148.41
           Units:                    fc

      WHITE On Axis Lum_010:         Failed
           Measurement:              197.5
           Units:                    fL

在这种情况下,我只想检测键(WHITE On Axis Lum_010)何时与测量一起出现,我不想检测它是否出现在日志中的其他任何地方。我的最终目标是从文件中获取测量和单位数据。

任何帮助将不胜感激。谢谢你,拉夫。

标签: stringlabviewteststand

解决方案


我会使用正则表达式,类似于 Salome。由于这些有点棘手,我为它们准备了一个测试 VI:

在此处输入图像描述

正则表达式是:

^\s{2}(.*?):\s*(\S*)\n\s*Measurement:\s*(\S*)\n\s*Units:\s*(\S*)

并且意味着:

^             Find a beginning of a line
\s{2}         followed by exactly two whitespaces
(.*?)         followed by multible characters
:             followed by a ':'
\s*           followed by several whitespaces
(\S*)         followed by several non-whitespaces
\n            followed by a newLine
\s*           followed by several whitespaces
Measurement:  followed by this string
\s*           followed by several whitespaces
(\S*)         followed by several non-whitespaces
\n            followed by a newLine
... and the same for the 'Unit'

括号表示组,并允许轻松收集字符串的有趣部分。如果数据格式不符合预期,RegEx 字符串可能需要更多调整,但这是一个起点。

要在您的字符串中查找更多数据,请将其放入 while 循环并使用移位寄存器将 输入offset past match到下一次迭代的偏移量中,如果是 则停止=-1


推荐阅读