• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

正则表达式和其在VBA的应用

武飞扬头像
或许在南回归线
帮助1

    基本概念

      正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是计算机科学的一个概念。


    功能

      正则表达式具有强大的功能,能够从繁杂的文本中快速匹配目标字符串。


    特点

      灵活性高,功能强大;可以最简单的方式处理杂乱的字符串。


    引用

      正则表达式不是Excel VBA自带的,需要引用才可以调用正则表达式的资源。有两种引用方式(以VBA为例):一是前期绑定,从vba编辑界面“引用”中找到“Microsoft vbscipt regular expressions 5.5”以上版本并引用,同时在vba代码框中输入”dim reg as new regexp”;二是后期绑定,无需任何引用,在VBA代码框中输入“set reg=createObject(“vbscript.regexp”)”,即可使用。

      后期绑定与前期绑定相比,后期绑定的vba代码移植性更好,前期绑定要求Excel必须引用“Microsoft vbscipt regular expressions 5.5”。


    属性

    (1)Global属性:选择true或者false,表示全局匹配还是非全局匹配;

    (2)Pattern属性:匹配模式,内容为正则表达式;

    (3)IgnoreCase属性:选择true或者false,表示不区分大小写或者区分大小写;

    (4)Multiline属性:选择true或者false,表示开启或关闭多行搜索。

    方法

    (1)execute方法:.execute(字符串),根据正则表达式Pattern在文本中执行匹配动作,返回一个字符串结果集;

    (2)Replace方法:. Replace(被替换的(匹配)字符串,新的字符串),和vba中的replace方法用法不同;如正则表达式. Replace(ss,””),将单元格ss中匹配的字符串替换为空值,而不是将ss所有内容替换为空值;

    (3)Test方法:. Test(ss),如果单元格ss中含有匹配的字符,返回true,否则返回false。


    Pattern语法结构

      使用元字符和数字、字母等组成正则表达式。


    元字符

    (1)\d:匹配单个数字,等同于[0-9];

    (2)\D:匹配单个数字以外的字符(包括字母、汉字、空格、下划线等各类符号),替代[a-zA-Z]。

    (3)\[一-龢]:匹配单个汉字,等同于[\u4E00-\u9FA5];

    (4)\w:匹配单个字母、汉字、数字和_;

    (5)\W:匹配任何非单词字符(包括空格等各类符号,即匹配\w以外的符号);

    (6)\s:匹配任何空白字符,如空格、制表符、换行符等不可见字符;

    (7)\S:匹配任何非空字符(\s以外的内容)等可见字符;

    (8)\n:匹配单个换行符;

    (9)\r:匹配单个回车符;

    (10)\t:匹配单个制表符;

    (11).:匹配出\n以外的任何单个字符;

    (12)\b:匹配一个字母和空格的位置(不支持汉字);

    (13)\B:匹配非字母和空格的位置;

    (14)*:匹配0次或者多次,等同于{0,};

    (15) :匹配1次或者多次,等同于{1,};

    (16)?:出现在非量词后,表示匹配0次或者1次,等同于{0,1};放在量词” ””*”后面,表示懒惰模式,分开匹配;(?:xxx)非捕获分组,匹配符合xxx模式的内容,但不获取该内容;

    (17){n,m}:匹配n次至m次,n<=m;

    (18)^:放在正则表达式最前面时,表示匹配以^后的模式开始的字符串,如^\d ,匹配以数字开头的字符串;放在其他位置时[^xxx],表示不能匹配^后模式的字符串;

    (19)$:匹配行尾,匹配以$前模式结束的字符串,如\d $,匹配以数字结尾的字符串;

    (20)\1:匹配前面内容在后面重复一次的。

    零宽断言,匹配一个位置:

    (21)(?=xxx):在xxx前面;

    (22)(?!xxx):不在xxx前面;

    注意:如果想表示其本身意思,加上“\”,表示转义。

    使用技巧:除了将多个正则表达式合并使用外,还可以将多个表达式单独放入数组,循环使用。


    延伸知识点

    对执行execute()方法返回的结果集中,可使用以下字符串属性对结果集进行操作。

    (1)匹配字符串的起点:匹配字符串.FirstIndex 1,字符串从0开始计数,所以需要加1;

    (2)匹配字符串的长度:匹配字符串.length;

    (3)标注颜色(以红色为例):单元格.characters(起点,长度).font.color=255。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgejbbf
系列文章
更多 icon
同类精品
更多 icon
继续加载