匹配正则表达式
- 更新时间2025-07-30
- 阅读时长5分钟
在输入字符串的偏移量位置开始搜索正则表达式,如找到匹配字符串,将字符串拆分成三个子字符串和任意数量的子匹配字符串。使函数调整大小,查看字符串中搜索到的所有部分匹配。

输入/输出
多行?(F)
—
忽略大小写?(F)
—
输入字符串
—
正则表达式
—
偏移量(0)
—
错误输入
—
匹配之前
—
所有匹配
—
匹配之后
—
匹配后偏移量
—
错误输出
—
|
正则表达式的支持由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!中返回两个子匹配:ell和Lab。每个子匹配按照字符组出现在正则表达式中的顺序对应一个字符组。在本范例中,子匹配1为ell,子匹配2为Lab。
如将一个字符组嵌套在另一个字符组内,正则表达式将先为外层的字符组创建子匹配。例如,正则表达式(.(el.).).(L..)在输入字符串Hello LabVIEW!返回三个子匹配:Hello、ell和Lab。在本范例中,子匹配1为Hello。因为正则表达式首先匹配外层的字符组。
正则表达式范例
下表为可与“匹配正则表达式”函数配合使用的正则表达式范例。
| 要搜索的符号 | 正则表达式 |
|---|---|
| VOLTS | VOLTS |
| 加号或减号 | [+-] |
| 一位或多位数序列 | [0-9]+ |
| 零个或多个空格 | \s*或*(即后带一个星号的空格) |
| 一个或多个空格、制表符、换行、回车 | [\t \r \n \s]+ |
| 一个或多个字符而不是数位 | [^0-9]+ |
| 在字符串开始位置出现的Level | ^Level |
| 在字符串结尾出现的Volts | Volts$ |
| 括号中最长的字符串 | \(.*\) |
| 括号中的第一个字符串,不包含任何括号 | \([^()]*\) |
| 左括号 | \[ |
| 右括号 | \] |
| cat、cag、cot、cog、dat、dag、dot和dog | [cd][ao][tg] |
| cat或dog | cat|dog |
| dog、 cat dog、cat cat dog或cat cat cat dog等。 | ((cat )*dog) |
| 一个或多个a字母后面有空格、字母a(例如,a a、aa aa或aaa aaa等)。 | (a+) \1 |
多行?(F)
—
输入字符串
—
偏移量(0)
—
错误输入
—
匹配之前
—
匹配后偏移量
—
错误输出
—