输入字符串偏移量位置开始搜索正则表达式,如找到匹配字符串,将字符串拆分成三个子字符串和任意数量的子匹配字符串。使函数调整大小,查看字符串中搜索到的所有部分匹配。


icon

输入/输出

  • cbool.png 多行?(F)

  • cbool.png 忽略大小写?(F)

  • cstr.png 输入字符串

  • cstr.png 正则表达式

  • ci32.png 偏移量(0)

  • cerrcodeclst.png 错误输入

  • istr.png 匹配之前

  • istr.png 所有匹配

  • istr.png 匹配之后

  • ii32.png 匹配后偏移量

  • ierrcodeclst.png 错误输出

  • 注: “匹配正则表达式”函数不支持字符串中有null字符的情况。如连接至函数的字符串包含null字符,LabVIEW将返回错误,函数可能返回未预期的结果。

    正则表达式的支持由PCRE库软件包提供。关于再次分发PCRE许可证的信息,请查看<National Instruments>\_Legal Information目录中内容。

    关于Perl兼容正则表达式的更多信息,请访问PCRE网站www.pcre.org

    “匹配正则表达式”函数提供更多的字符串匹配选项,但执行速度比匹配模式函数慢。

    在该函数中使用正则表达式可提炼搜索结果。

    避免栈溢出

    有些正则表达式使用重复表达组合(例如,(.|\s)*或(a*)*)。当输入字符串较大时,这些表达式会占用非常多的处理资源。有些较大的输入字符串会导致堆栈溢出。尝试匹配较大的字符串时,某些正则表达式可引起重复递归,最终导致堆栈溢出。例如,对于较大的输入字符串,正则表达式(.|\n)*A可导致LabVIEW崩溃。将正则表达式 (.|\n)*A改写为(?s).*A,可避免不必要的递归运算。(?s).*A表达式中的句点表示匹配新的行。也可将正则表达式进一步优化为[^A]*A

    子匹配的组合模式

    在正则表达式的合适位置添加括号( ),可使函数返回子匹配。例如,正则表达式(el.)..(L..)将在输入字符串Hello LabVIEW!中返回两个子匹配:ellLab。每个子匹配按照字符组出现在正则表达式中的顺序对应一个字符组。在本范例中,子匹配1ell子匹配2Lab

    如将一个字符组嵌套在另一个字符组内,正则表达式将先为外层的字符组创建子匹配。例如,正则表达式(.(el.).).(L..)在输入字符串Hello LabVIEW!返回三个子匹配:HelloellLab。在本范例中,子匹配1Hello。因为正则表达式首先匹配外层的字符组。

    正则表达式范例

    下表为可与“匹配正则表达式”函数配合使用的正则表达式范例。

    要搜索的符号正则表达式
    VOLTSVOLTS
    加号或减号[+-]
    一位或多位数序列[0-9]+
    零个或多个空格\s**(即后带一个星号的空格)
    一个或多个空格、制表符、换行、回车[\t \r \n \s]+
    一个或多个字符而不是数位[^0-9]+
    在字符串开始位置出现的Level^Level
    在字符串结尾出现的VoltsVolts$
    括号中最长的字符串\(.*\)
    括号中的第一个字符串,不包含任何括号\([^()]*\)
    左括号\[
    右括号\]
    catcagcotcogdatdagdotdog[cd][ao][tg]
    catdogcat|dog
    dogcat dogcat cat dogcat cat cat dog等。((cat )*dog)
    一个或多个a字母后面有空格、字母a(例如,a aaa aaaaa aaa等)。(a+) \1