ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 40382|回复: 98

[原创] 提取符合特定规则的文本,我用“万能正则表达式”!

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2018-8-16 13:41 | 显示全部楼层 |阅读模式

“正则表达式何其复杂,尔安敢妄言‘万能’正则表达式耶?!”
“其必标题党人!待吾觅臭鸡蛋投之!”

且慢!各位看官!
本文标题虽然足够吸引眼球,但内容绝对更加劲爆!请各位看官放心,本人绝不是标题党!
下面就放出万能正则表达式,各位看仔细了!
[\s\S]*?([一-龥]+)|[\s\S]+
……咳咳,本人今天有点闹肚子,要去先解决一下,各位慢慢看,少陪了!

评分

6

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-17 09:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ggmmlol 于 2018-8-22 12:43 编辑

昨天预热一天,今天正式对“万能正则表达式”做详解。

将包含以下内容:(第一至第六节 已经贴出,建电梯供直达相应楼层

第一节:“万能正则表达式”的一般写法和概述

第二节:“万能正则表达式”的简略写法

第三节:“万能正则表达式”的特例

第四节:实例之——提取手机号码

第五节:实例之——提取字符串中的多项金额,并计算合计金额。

第六节:实例之——含有注释字符的工程量计算式求值


第七节:“万能正则表达式”的原理(因为各种质疑颇多,此节的发表时机待定。于2018-8-22日说明)

第八节 实例之——从文本中提取所有电话号码(包括手机和座机号码)

第九节 实例之——提取符合特定条件的字符,并去掉重复项
第九节 实例之——提取符合特定条件的字符,并去掉重复项

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-18 10:34 | 显示全部楼层

有必要声明一下:

凡是在 本贴正贴部分
1)、本人所称的使用正则表达式的Replace方法得到想要的内容,默认都是只对源字符串仅执行一次正则替换,而直接到得的结果(即:不把正则替换的结果做再次加工;即使在有特别说明时也只允许执行 “有限多次”的正则替换,不允许执行“不定多次”的正则替换。
比如,我在此前的16楼中的特例4中,就特别指出:当Y-X>8时,可能需要2次执行正则替换,才能提取到源字符串中匹配于正则表达式eXp的各部分字符串中的 第X项至第Y项。
2)、正贴部分,所列出的正则表达式,要求适应于以下自定义的 通用型 正则替代函数
Public Function REGREPLACE(ByVal text1$, ByVal pttn$, Optional ByVal strReplacer$ = " ")
    With CreateObject("vbscript.regexp")
        .Global = True
        .Pattern = pttn
        REGREPLACE = .Replace(text1, strReplacer)
    End With
End Function

至于 本贴讨论部分的各楼层中,为活跃论坛气氛,可以不受上述声明限制。

评分

2

查看全部评分

头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-8-16 14:07 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-16 14:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
mikezhan 发表于 2018-8-16 14:07
空格+非空格+任意字符0个或1个。。。。

非也非也!

还要再看仔细一点

我来找个“粟子”,大家可以“尝试”一下:

这个求助贴中,贴主要求提取A列每个单元格中 以JT开头的16位数字 ,对应放入B列:

求助:某个字符串中,如果出现某个字符,就提取该字符及之后的几个字符
http://club.excelhome.net/thread-1417880-1-1.html


头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-8-16 14:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-16 14:37 | 显示全部楼层

为免 水贴之嫌,还是来点干货吧。

仍以上面提到的求助贴为例,实际演示一下:

超级替换58.gif

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-16 14:55 | 显示全部楼层
mikezhan 发表于 2018-8-16 14:27
钻研这些鬼东西干嘛?非要钻牛角尖?

对实际工作有帮助?

你说得很有道理。东非大草原上的狮子和角马、长颈鹿从来不研究语文和数学,同样在地球上繁衍生息了千百万年,现在也过得一样有滋有味。所以,我对这个帖子给你带来的打扰深感抱歉,I'm sorry!

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-8-16 15:22 | 显示全部楼层
到底是个啥?能不能简单说一下,那个“万能”正则表达式是什么意思?举个例子都能干什么?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-16 17:02 | 显示全部楼层
zhang6029 发表于 2018-8-16 15:22
到底是个啥?能不能简单说一下,那个“万能”正则表达式是什么意思?举个例子都能干什么?

要想知道“万能正则表达式”都能干什么,首先你要了解“正则表达式”能干什么。

至于冠以“万能”,就是说把正则表达式统*一到同一种模式(或者叫公式)之中,从而简化正则表达式的编写,以不变应万变,达到降低编写难度、减少失误、提高效率之目的。

好吧,我就再举一个例子:

本实例来源见以下原求助贴:
如何提取编号
http://club.excelhome.net/thread-1418396-1-1.html

超级替换59.gif



评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-8-17 10:36 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-23 14:48 , Processed in 0.047449 second(s), 22 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表