石鑫华视觉论坛

 找回密码
 注册会员
查看: 21|回复: 0

[原创] LabVIEW匹配两个字符串之间的内容方法一二

[复制链接]
  • TA的每日心情

    昨天 07:51
  • 签到天数: 3390 天

    连续签到: 12 天

    [LV.Master]2000FPS

     楼主| 发表于 昨天 15:38 | 显示全部楼层 |阅读模式 来自:广东省东莞市 电信

    注册登陆后可查看附件和大图,以及购买相关内容

    您需要 登录 才可以下载或查看,没有账号?注册会员

    x
    LabVIEW匹配两个字符串之间的内容方法一二
    很多时候,我们需要匹配两个字符串之间的内容,比较典型的如引号中的内容:”123”中的123,括号中的内容:[abc]中的abc,或者是两个特定字符串之间的内容,如120045673389字符串中00和33之间的4567。LabVIEW中有匹配模式、匹配正则表达式等相关的函数可以使用。但是对于上面的这种要求,匹配两个字符串之间的内容,则并不能简单的使用一次匹配模式或正则表达式的方式来实现(可以匹配一次,但是要通用,则需要格式化正则表达式)。实际上,这里的前后两个字符串,是属于两个匹配的要求了。所以,这里可以仍然是可以考虑使用匹配模式、匹配正则表达式的方式来处理,但是要稍微改造一下才能达到要求。
    先来看方法一:直接使用两次匹配模式,第一次匹配两个字符中的前一个字符;第二次匹配两个字符中的后一个。这种方法简单明了,速度也快:
    image1.png
    匹配模式
    image2.png
    LabVIEW匹配两个字符串之间的内容-2次匹配模式.vi
    如上面的示例中,输入字符串是你【我】他,正则表达式前匹配是【,后匹配是】。则第一次使用匹配模式时,子字符串之前的内容是你,匹配子字符串是【,子字符串之后的内容是我】他。然后将子字符串之后的内容再做一次匹配模式,正则表达式后匹配是】,子字符串之前的内容是我,匹配子字符串是】,子字符串之后的内容是他。实际上,按照要求,这里的子匹配2,就是我们期望得到的数据,其他的内容只是方便查看具体内容显示出来的。所有匹配的输出项可以不用连接字符串。
    当然,这里使用了匹配模式,对于如[]等符号,需要加转义字符\来描述。
    image3.png
    []没有转义字符时不能匹配
    image4.png
    []有转义字符时能匹配
    方法二、格式化写入字符串+匹配正则表达式
    image5.png
    格式化写入字符串
           先使用格式化写入字符串函数得到具体要匹配的正则表达式,然后再使用匹配正则表达式函数来处理:
    image6.png
    匹配正则表达式
    image7.png
    LabVIEW匹配两个字符串之间的内容-格式化写入字符串+匹配正则表达式.vi
    这里需要注意一下,匹配正则表达式,需要使用三个子匹配,其中的子匹配2,才是我们期望得到的。这里的匹配正则表达式是(%s)(.*)(%s),第一个括号中的内容就是前匹配,第二个括号内中的内容,就是我们期望匹配的内容,第三个括号中的内容是后匹配。(%s)(.*)(%s)匹配的结果是所有匹配,在(%s)(.*)(%s)之前的,则是匹配之前;在(%s)(.*)(%s)之后的则为匹配之后。如果已经知道具体的要匹配的内容,那么第一、第三个括号里可以直接写入要匹配的内容,就不再需要格式化写入字符串。这里的\[]等特殊符号,仍然需要使用转义字符:
    image8.png
    不使用转义字符时出错
    image9.png
    缺少A)
    image10.png
    使用转义字符能正常匹配
    VI实例:LV2020
    LabVIEW匹配两个字符串之间的内容-2次匹配模式.vi (15.03 KB, 下载次数: 0)
    LabVIEW匹配两个字符串之间的内容-格式化写入字符串 匹配正则表达式.vi (26.85 KB, 下载次数: 0)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

    LabVIEW HALCON图像处理入门教程(24.09)
    石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
    《LabVIEW Vision函数实例详解2020-2024》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23/24

    QQ|石鑫华视觉论坛 |网站地图

    GMT+8, 2024-11-29 07:41

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表