正则表达式学习笔记

    技术2022-05-20  73

     

     

    正则表达式学习笔记

    (1)        VBScript中,使用RegExp对象支持正则表达式的使用:

       属性:Pattern 描述正则表达式的匹配模式

      Global   设置搜索仅匹配第一个还是全部匹配

      IgnoreCase 设置匹配是否区分大小写

      方法:Execute 对指定字符串进行搜索,返回Matches集合,包含了找到的每一个匹配项

       Test 搜索,返回布尔值,表示是否找到到了匹配的模式

       ReplaceString,“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}{nm}、?(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)        贪婪与懒惰:

    默认为贪婪:匹配尽可能多的字符

    懒惰:匹配尽可能少的字符,在后面加上?,如*?重复任意次,但尽可能少重复

    现在只是学习正则表达式的规则和理论,具体还是要在测试的过程中进行实践,以更深入的理解和运用正则表达式。

     


    最新回复(0)