正则表达式匹配小数(正则表达式匹配小数和整数)


Excel在进行数据处理时,不可避免地要从一堆文本中识别出所需的数据。正则表达式就是一个便捷、高效的文本处理工具,利用它分析任何复杂的文本,配合编程语言能够查找、替换、提取、各种类型的文本和数据。当今主流编程语言都提供了对正则表达式的支持。


正则表达式处理文本的思路:首先要在目标文本中找出指定的字符串,而要查找它们必须得先描述出该字符串的特征。正则表达式用一些”特殊字符”来表述指定字符串的结构,这些组成正则表达式的”特殊字符”称之为元字符。元字符是正则表达式事先规定的,用来表示字符、位置、数量和控制的专用符号。在组成正则表达式的元素中,有的是由两个或多个特殊字符组成一个单元,表示单一意义。比如:“牛肉 75.5/斤” 要提出其中的数据,正则表达式表示为:[一-龢]+|\d+\.?\d?

EXCEL VBA学习笔记:正则表达式(一)元字符



正则表达式用元字符建立一个数据的模式,然后用该模式到文本中去查找,查找到的结果叫”匹配”。如果示例中匹配到3条记录,对应需要的品名、价格、单位。


下面列举一些在VBA中正则表达式中常用的元字符


[一-龢] 代表汉字(汉字“一”,汉字“龢”拼音HE),另一种表述 [\u4E00-\u9FA5];\d 代表数字(半角状态下的数字), 另一写法[0-9],区别是:[0-9]这种表述可以缩小范围,如写成[0-6],就不会匹配大于6的数字了; "." 就是小数点能代替所有字符, 除“\n” 换行符外;\.就代表1个小数点,\ 此符号为转义符。


[a-zA-Z] 代指 英文的大小写字母; \w 单个数字、字母和_ ;\W 代表的字符为 \w不能代表的;\D 数字之外的字符(包括字母,汉字,空格,下划线,各种符号);


\s 看不见的字符(空格,换行符,回车,换页等); \S 与小写\s相反,代表所有看得见的字符或符号;


\n 代一个换行符; \r 代一个回车符; \t 代一个制表符(tab键);


八进制转义:\num (num是一个八进制数); 十六进制转义:\xnum (num是一个十六进制数)


Unicode转义:\unum (num是unicode代码点),上面汉字的第二种表述就属于这个。


根据示例介绍几个特殊字符:"|" 选择符,例:"中国|China" 表示匹配目标文本中的"中国"或"China"两个字符串。(示例中有用到,如果不用,[一-龢]+\d+\.?\d?这个正则表达式的代表意思就为:汉字+数字(可能有小数的数字)。因为真实文本内容在数字前有空格,去掉"|"后根本匹配不到数据)


()小括号,捕获性括号,把括号内的元字符匹配到的内容进行分组记录,匹配到1次就记在分组1中,2次就依次2个分组。正则引擎有特殊的变量$1、$2来代表分组。


^ 代表文本开始的位置;$ 代表文本结束的位置。^$组合在一起,表示空数据了。


量词:元字符通常只是代表单个某类字符,所以要配合量词才能完整表述文本的结构进行匹配,不加量词匹配得到的就是单个字符。

EXCEL VBA学习笔记:正则表达式(一)元字符



在上面示例中"+" 表示"元字符代表的" 1次或多次出现; ? 表示"元字符代表的" 出现了0次或1次,如果超过1次,因?意义,匹配得到的也只有1次,即单个字符。*表示"元字符代表的" 出现了0次或1次或多次。


{n}、{n,m}也是量词表示法,n与m 都要是正整数。{n} 表示"元字符代表的" 出现了n次,如果"元字符代表的"出现超过了N次呢? {n,m} 表示"元字符代表的" 出现了n次到m次。

EXCEL VBA学习笔记:正则表达式(一)元字符



匹配的数据以容许范围内,匹配之后,再判断剩下的数据是否匹配?匹配到"牛肉牛"后,剩下的汉字只有"牛",不满足表达式所述的最少2次,不再被匹配。


注:量词要紧跟在元字符之后才有数量之意;如? 如果出现在小括号()中,就是另外的意思了。

本站部分内容由互联网用户自发贡献,该文观点仅代表作者本人,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规等内容,请联系我们举报!一经查实,本站将立刻删除。