正则表达式学习笔记
(1) 在VBScript中,使用RegExp对象支持正则表达式的使用:
属性:Pattern 描述正则表达式的匹配模式
Global 设置搜索仅匹配第一个还是全部匹配
IgnoreCase 设置匹配是否区分大小写
方法:Execute 对指定字符串进行搜索,返回Matches集合,包含了找到的每一个匹配项
Test 搜索,返回布尔值,表示是否找到到了匹配的模式
Replace(String,“replace”)替换正则表达式中找到的文本
(2) 使用正则表达式,是QTP中参数化脚本和检查结果时更加灵活
(3) 元字符(metacharacter)
/b进匹配一个位置,代表单词的开头或结尾
/w匹配字母或数组或下划线或汉字,等同于[0-9a-zA-Z_]
.匹配除换行符以外的任意字符
*代表的是数量,*前边的内容重复任意次(可能是0次)以使整个表达式得到匹配 (与linux不一样)
+与*相同,但是匹配一次或更多次
/d匹配任意的数字,等同于[0-9],/d/d表示两个数字,也可以写成/d{2}
/s匹配任意的空白符,包括空格、Tab、换行符、中文全角空格等
^匹配字符的开始,似/b,匹配一个位置
$匹配字符串的结束,似/b,匹配一个位置
(^和$有时候是匹配行的开始出和结束处)
(4) 字符转义用/
(5) 字符类:[aeiou]匹配任意一个元音字母
(6) 重复:*、+、{n}、{n,},{n,m}、?(0次或一次)
(7) 反义:/W 、/S 、/D、/B、正好与元字符的意思相反
[^aeiow]匹配除了aeiou这几个字母之外的任意字符
(8) 替换用 |
(9) 分组:用于重复一个字符串
(10) 向后引用:重复搜索前面某个分组匹配的文本,组好以左括号的顺序从1开始计。
/b(/w+)/b/s+/1/b可以用来匹配重复的单词,像go go
指定组名:(?<name>expression),或者(?’name’expression)
(11) 注释 (?#comment)
(12) 位置指定:(?=exp),匹配exp前面的部分,/b/w+(?=ing/b);
(?<=exp)匹配exp之后的部分,(?>=/bre)/w+/b
(13) 负向位置指定
(14) 关于正则表达式的更深入学习:位置指定、负向位置指定、贪婪与懒惰、平衡组可以参考博客。
(15) 捕获:(?<=expression)捕获到自动命名的组里
(?<name>expression),或者(?’name’expression)捕获到name组里
(?:expression)不捕获匹配文本
(16) 位置指定:(?=exp)零宽先行断言,匹配某些位置,这些位置的后面能匹配给定的后追exp。
(?<=exp)零宽后行断言,匹配某些位置,这些位置的前面能匹配给定的前缀exp。
((?<=/d)/d{3})*/b表示“一个很长的数字中每三位间加一个逗号”.其中(?<=/d)/d{3}匹配三位数字,且这三位数字前也是数字。 ((?<=/d)/d{3})*,重复n次,即对整个数字串循环;但是这个表达式不足以表示“一个很长的数字中每三位间加一个逗号”,因为第一个都好会出现在第一个数字和第二个数字之间,而不是第三个和第四个数字之间。
(17) 负向位置指定:与“^”不一样,只是匹配位置,但是不消费任何字符。
(?!exp)零宽负向先行断言:匹配后缀exp不存在的位置。
(?<=exp)零宽负向后行断言:匹配前缀不存在的为位置。
(18) 贪婪与懒惰:
默认为贪婪:匹配尽可能多的字符
懒惰:匹配尽可能少的字符,在后面加上?,如*?重复任意次,但尽可能少重复
现在只是学习正则表达式的规则和理论,具体还是要在测试的过程中进行实践,以更深入的理解和运用正则表达式。