Table of Contents   MOBOTIX Online Help

正则表达式

本页仅给出正则表达式的概念的简要介绍,非常不完整。有关此主题的详细信息,请阅读 Jeffrey E.F. Friedl, O'REILLY 编写的正则表达式 一书(强烈推荐)。

正则表达式是一些搜索模型,可以用来检测字符串。例如,可以使用正则表达式测试 IP 信息的信息文本或通过串行接口发送的数据。正则表达式由要搜索的一个或多个字符和执行特定功能的特殊字符组成。

示例:

一个设备通过串行接口发送下例数据:

[...]
2003-09-22 12:24:50 PM robots ready
2003-09-22 12:24:51 robots starting process
2003-09-22 12:25:25 robots finished in 34sec
2003-09-22 12:25:30 robots ready
2003-09-22 12:25:31 PM robots starting process
2003-09-22 12:25:33 error:no material found
2003-09-22 12:25:33 robots stop on error

如果设备返回出错信息(如示例的最后一行中所示),按正则表达式 stop.*error 将触发一个事件。


特殊字符

如果要搜索下表左列的字符或者反斜杠“\”或减号“-”,请在它们前面加反斜杠“\”(也称为屏蔽)。

字符 功能
^ ^ 符号表示字符串的开头。表达式 ^Test 实际是指以 Test 开头的字符串。
$ $ 符号表示字符串的结尾。表达式 Test$ 实际是指以 Test 结尾的字符串。
.

句点 符号代表一个 字符的占位符。ab.d 表达式可能指 abcdabad,但不是 abccd

要搜索 . 字符本身,需要在其前面加反斜杠“\”。例如,表达式 ab\.d 仅表示 ab.d

* 星形 符号是重复运算符,意思是前导字符可能永远不会出现,或者可能出现无数次。表达式 ab*c 可能指 abcabbbbbc,也可能指 ac
+ 加号 字符同样是重复运算符,意思是前导字符可能出现一次,或者可能出现无数次。表达式 ab+c 可能指 abcabbbbbc,但不会是 ac
? 问号 字符表示前导字符可能出现一次,或者永远不出现。表达式 ab?c 可能指 abcac,但不会是 abbc
[ ]

[方括号] 包围的表达式代表字符类。

字符类可以定义为列表,也可以定义为范围。表达式 [abc] 代表一个字符列表,而表达式 [a-m] 代表一个范围。

例如,[0-9] 指所有数字,而 [a-z] 指所有小写字母。可以在一个字符类中使用多个范围,例如 [0-9a-zA-Z],或者混合列表和范围,例如 [afm0-6]

也可以使用前导脱字符号“^”表示否定字符类。表达式 [^ab] 指非 a 也非 b 的所有字符。

cn, de, en, es, fr, it, jp, ru

© 2001-2017 MOBOTIX AG, Germany · http://www.mobotix.com/