正则表达式在自动化中的使用

正则表达式描述了一种字符串匹配的模式(pattern),用来检查一个字符串中是否含有某种字符串,将匹配到的字符串替换或者从某个串中取出符合某个条件的字串等。

 匹配的方法

  1、re.match(pattern, string, flags=0),match只匹配起始位置的子字符串,即返回结果只有一个,否则返回None;

      -- pattern:表示正则表达式

     -- string:要匹配的字符串

     -- flags:控制匹配的方式

  2、re.search(pattern, string, flags=0),search 可以扫描整个字符串并返回第一个成功匹配的子字符串,即返回结果只有一个,否则返回None;

  3、re.findall(pattern, string, flags=0),findall 可以找到所有满足匹配条件的结果,并以列表的形式返回,否则返回None;

 

  在正则表达式中, group() 是用来取出分组截获到的子字符串() 用来分组的,group只适用于match、search()方法;

  正则表达式在自动化中的使用

 

   在以上的示例中,把匹配到的字符串可分为三组,因为正则规则是有三个();

    group() 等价于group(0) ,即匹配到的字符整体结果;

    group(1):匹配规则中的第一个括号内容;

    group(2):匹配规则中的第二个括号内容;

    group(3):匹配规则中的第三个括号内容;

    

语法:

  -- .:点表示匹配任意的一个字符,除了\n;

       -- \w:匹配字母、数字、下划线的字符串;

       -- \d:匹配数字;

  -- * :* 表示匹配任意字符0次或者任意次;

  -- + :+表示匹配任意字符1次或者任意次;

  -- ?:表示0次或者1次,非贪婪模块,即返回匹配成功的字符串为0次或者1次;

  -- [ ] : 匹配里面的任意一次

  -- {m, n}:最少匹配m次,最多匹配n次

   更多的语法可查看:https://www.runoob.com/regexp/regexp-metachar.html

 

替换:

  语法:re.sub(pattern, repl, string,  count=0, flags=0)

       -- pattern:正则规则

         -- repl:要替换的字符串

         -- string:要查找的字符串

         -- count:替换次数 

        -- flags:控制匹配的方式

 

终合使用示例:

    import re

    def replace_data(target):

      pattern = r'#(.*?)#'

      while re.findall(pattern, target):

            # value = re.search(pattern, target).group(1)

         # repl = getattr(Contexy, value)      可动态获取某个类的属性

         target = re.sub(pattern, '123', target, 1)

 

    strings = {"user_name": "#user_name#", "password": "#password#"}

    replace_data(strings)

 

上一篇:Quaimodo Pattern 本质探索


下一篇:什么是设计模式?有哪些常见的设计模式?