ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] Word的查找替换(利用正则表达式)——启示录

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-4-24 09:56 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
正则表达式是一个非常强大非常强大的功能。我记得甚至有人专门写了一本很厚很厚的书来讲述正则表达式。这种书我是很想读,但是没有时间,也没有心情来看。因为我们在生活中遇到的问题其实很小很小,根本轮不到用那么高深的知识来高射炮打蚊子。(读书很难得到及时的正反馈,很难让人坚持下去)

昨天我提了一个问题,帖子如下:http://club.excelhome.net/thread-1473284-1-1.html,应该最后一个回答是解决了问题。但是前面的回答却让我很沮丧。(当然要感谢回答的同学,虽然一开始并没有解决问题)我开这个帖子目的不是为了说明怎么解决这个问题,更多的是我想提供一个学习的思路。

搜索了很多帖子,其实多数时候是提供最终解决方案,很少有人会提供解决思路。我也看不懂。但是看不懂归看不懂,我可以猜啊,我可以试啊。

比如我看到很多人的解决方案是要加上小括号的,那么我就在想,这是不是为了把他们划堆。(回答者通常没有讲述这么做的目的,也许大家都是默认提问者应该懂得这么做的意思)所以就要尝试,有括号和没括号的区别。做过几次实验之后,对自己的猜测进行验证。一旦发现自己的猜测成立,这种体验也是非常好的。然后我又看到\1,\2之类的字眼,我不知道这是什么意思 。(搜索吗?没有人会提供直接的解释答案的,更多人是直接给结论。直接给结论,有一个坏处,就是特定性太强,万一问题变了,我还是不懂啊。)我猜测大概是位置的意思?是定位原来那个括号的顺序的意思?实验过后,发现还真是那个意思。于是,问题就得到解决了。

有时候你会发现,自己悟到的答案,比别人提供的答案会印象更深刻。我觉得这可能跟语言表达的局限有关。因为我其实也觉得自己上面并没有很清楚全面的把我的思想表达清楚(比如划堆,我脑子里很清楚是什么意思,但是读者们你们真的能猜出我说的是什么吗?)

好吧,我重新整理一下思路,重新用例子表达一下,我想应该能够让大家更好的理解这个问题。

Snipaste_2019-04-24_09-42-17.png

我最早的目的是想在所有的类似“130-190)”的文字中间添加一个单位“mm"(就是想给数字添加上单位,仅此而已)。首先要定位,我一开始是用[0-9])去查找。这个没问题,很简单。但是我要插入mm就难了。我怎么告诉电脑在什么位置插呢?所以后来我看到别人给的答案里有括号,我就在猜,括号的目的是什么?就是为了把“0”和“)"分堆吧?有人给答案的时候包含\1等字样,我在猜是不是确定插入的字符在这些“堆”里面的位置呢?然后我其实错了。因为我用\0我想把插入内容放在前面,目的没实现。然后我早上又突然想到,也许这些是查找内容的位置,表示重新插入搜索内容在新文档里的位置呢?然后我发现,我猜对了。
Snipaste_2019-04-24_09-50-29.png (这里\1表示引用了([0-9])的内容,\2表示引用了())的内容。mm是我新插入的内容。

明白了这一点之后,很多问题就更好解决了。比如我想把“东北部”变成“东北部和西北部”,传统的方法当然是查找“东北部”替换成“东北部和西北部”,但是我们也可以直接插入的方式:

Snipaste_2019-04-24_09-54-38.png

利用这种方式是不是能干一些传统方法不能做到的工作呢?我暂时还没想到,但我想应该确定是有的。

希望能够对大家有所启发。(我自己在写作过程中会对这种方法做进一步的认识)






TA的精华主题

TA的得分主题

发表于 2019-4-24 22:54 | 显示全部楼层
正则表达式在哪里呢?。。。。

TA的精华主题

TA的得分主题

发表于 2019-4-24 23:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
1、这是WORD中查找替换的基础知识
2、你讲的这些内容与正则没有关系                                                                                            

TA的精华主题

TA的得分主题

发表于 2019-4-25 08:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
遇到问题积极思考和探索,是值得赞赏的。
书还是要看的,粗略浏览一遍有个印象也是好的,有助于在碰到问题的时候快速寻找答案。
回答者能够针对于问题给出答案,我觉得已经很好了。还要附带解释,确实是很麻烦的。
有答案又附带解释,这样完美的回答可是说是万里挑一了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-25 10:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
jiminyanyan 发表于 2019-4-24 22:54
正则表达式在哪里呢?。。。。

我错了?我以为加上括号,加上\1,\2就是正则表达式的内容?
看来我还是太naive了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-25 10:21 | 显示全部楼层
小花鹿 发表于 2019-4-24 23:50
1、这是WORD中查找替换的基础知识
2、你讲的这些内容与正则没有关系                                     ...

正则表达式太难了。
曾经有一篇文章说要在半个小时内讲清楚正则表达式,结果临了他说是骗大家的,根本不可能在半个小时讲清楚。。然后我就懵逼了。。
Word当中能利用正则吗?(我以为我说的是,看来不是)

TA的精华主题

TA的得分主题

发表于 2019-4-25 10:47 | 显示全部楼层
andy800529 发表于 2019-4-25 10:21
正则表达式太难了。
曾经有一篇文章说要在半个小时内讲清楚正则表达式,结果临了他说是骗大家的,根本不 ...

半个小时?半年还差不多,虽然说半年有点夸张了,但也不无道理
WORD的查找替换和正则的工作原理相似,但不是一回事
WORDVBA中可以用正则,但查找替换中不行

TA的精华主题

TA的得分主题

发表于 2019-4-25 11:32 | 显示全部楼层
遇到问题积极思考和探索,是值得赞赏的。



                                            莫愁前路无知己,天下谁人不识君!海内存知己,天涯若比邻!  

    TA的精华主题

    TA的得分主题

    发表于 2020-2-20 12:58 | 显示全部楼层
    [广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
    哪里有正则表达式?
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-11-24 14:40 , Processed in 0.033919 second(s), 11 queries , Gzip On, MemCache On.

    Powered by Discuz! X3.4

    © 1999-2023 Wooffice Inc.

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

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

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