正则表达式 (regex) 基础知识

下表提供了在 Cognex ViDi Suite 内使用正则表达式的一些基础知识。

定位标记

^

指定字符串或行的开头,例如 ^0 将匹配以 0 开头的字符串。

Note: 在括号内使用 ^ 符时,即 [^ 0],^ 表示不启动。

$

指定字符串或行的结尾,例如 0$,将匹配以 0 结尾的字符串。

基本匹配

.

匹配任何单个字符。

Note: 要匹配句点,必须使用斜杠来转义点。例如,您输入:\.

\d

匹配 0123456789 范围内的任何数字。

还可以通过键入数字来表示实际数字 0-9。

\w

匹配任何字母、数字和下划线字符 (_)。

区分大小写的实际字符可以通过键入字符 a-z 或 A-Z 来表示。

\s

匹配空格。

具体字符

[...]

方括号 [ ] 用于匹配特定字符,这些字符在方括号内定义。例如,[a-z]匹配 a 到 z 的一个小写字母,或 T[ao]p 将匹配 Tap 或 Top。括号可用于复合结构,例如 [A-C][0-3][g-i],可以匹配字符串 A0g、A0h、B1i 和 C3g 的字符串。

重复

{...} 花括号{ }用于表示重复。例如,t{2}返回两个t;[def]{3}返回三个字符,可以是 d、e 或 f;而.{1,4} 匹配 1 至 4 的任意字符。

*

表示字符或数字的零个或多个实例。例如,a* 会匹配零个或多个字符。

+

表示字符的一个或多个实例。例如,[nop]+ 将匹配 n、o 或 p 字符中的一个或多个。

可选字符

?

问号 ? 用于匹配零个或一个前面字符或组。例如,12?3 将匹配 123 或 13。

Note: 要匹配问号,必须使用斜杠来转义问号。例如,您输入:\?

分组

(...)

括号用于定义字符组,使一对括号内的子模式构成一个组。这非常有利于从图像文件名中提取信息。例如,如果您策划图像使用某种命名约定,例如 Good_0001.png,并且只想返回那些图像,则可以使用 ^(Good.+)\.png$

您还可以使用括号捕获嵌套组。使用上面的示例,可以根据数字细化搜索,例如 ^(Good(\d+))\.png$

此外,也可在括号内使用上述量词以捕获模式。例如,如果要捕获大于 1000 的可能区域,则可以使用 (\d{4})x(\d{4})

逻辑 OR 标识符 | 可用于表示不同的可能字符集。例如,如果您想在一组文件名中返回“scratch”,“dent”或“hole”,则可以使用 ^(Bad(\d+)(scratch|dent|hole))\.png$