string - 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)何时与测量一起出现,我不想检测它是否出现在日志中的其他任何地方。我的最终目标是从文件中获取测量和单位数据。
任何帮助将不胜感激。谢谢你,拉夫。
解决方案
我会使用正则表达式,类似于 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
。
推荐阅读
- insertion-sort - 仅使用 java.util.Scanner 的 JAVA 插入排序
- python - 查找多个网页的所有日期/事件
- batch-file - 如何检查批处理文件中的变量是否包含某个字符串
- php - 特征中递归方法中的名称冲突
- linux - 如何以编程方式污染 Linux 内核?
- docker - 运行 Docker 映像时缺少端口?
- html - 鼠标悬停在内部时外部 div 的样式
- terraform - Terraform:将json文件内容作为json传递给heredoc
- wordpress - 为特定类别应用 wordpress 片段
- azure - How do you filter a rest api call?