ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] word查找功能使用通配符时,"?"与"{}"同时使用出现问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-9-18 11:20 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
如图所示,我希望实现的功能其实很简单,就是查找 "第" 与 "部分" 之间间隔2-3个字符的内容。所以这里面符合要求的应该只有 "第10部分" 和 "第两万部分" 这2行内容。
可是实际运行发现,括号中用来限制最小数量的部分发挥了作用(也就是逗号前的2),所以从 "第1部分" 到 "第9部分" 都不再会单独被找出;而最大值(逗号后的3)完全没用,导致word在找到 "第" 以后一路向后查找,直到找到 "部分" 为止。是我哪里做错了么?如果是我做错了,那么正确的写法应该是怎样的?

GIF.gif

TA的精华主题

TA的得分主题

发表于 2019-9-18 15:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
确实不行!楼主用 VBA 宏代码吧!(另:楼主 最终目的是什么呢?)

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-18 16:16 | 显示全部楼层
413191246se 发表于 2019-9-18 15:24
确实不行!楼主用 VBA 宏代码吧!(另:楼主 最终目的是什么呢?)

在编辑一些古代章回体小说时,需要批量对 "第N回" 这样的回目标题做一些编辑。当然,我可以扔进 UE 之类的编辑器,用正则表达式来处理,然后再扔回 word 里;只是我也想学习 word 通配符查找的用法,毕竟这其实就是略微修改后的正则表达式嘛。
所以奇怪之处就在于,问号代表任意单个字符,这个没有问题;大括号限制前面字符的出现次数范围,这个也没有问题。但为啥这俩放一块儿用就会出问题嘞?而且还是部分出问题,就像我上面例子中的 {2,3} ,2生效了,3没生效。不解呀,总不能是 word 的 bug 吧!
PNG.png

TA的精华主题

TA的得分主题

发表于 2019-9-18 16:31 | 显示全部楼层
第(?){2,3}部分

用上面这个,可以匹配到“第11部分”、“第111部分”。

但是这个却无法匹配到“第两万部分”,不知道为什么。

TA的精华主题

TA的得分主题

发表于 2019-9-18 20:19 | 显示全部楼层
本帖最后由 sznie 于 2019-9-18 20:39 编辑

2016下,这个好像能符合,但也没搞懂

第[!部]{2,3}部分

TA的精华主题

TA的得分主题

发表于 2019-9-18 20:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

TA的精华主题

TA的得分主题

发表于 2019-9-18 22:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主,我有 VBA《第一章》宏代码,对付各种 章/条/节/课/回/部分/阶段/自然段 等数量词均是 OK 的。建议你使用,本坛查找《第一章》即可。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-18 23:50 | 显示全部楼层
感谢 sznie 与 sylun 提供的方法,我用 "第[!部]{2,3}部分" 的确实现了想要达到的查询效果!
不过我还是没有理解,为什么 "第?{2,3}部分" 不行呢?而且我试了一下,好像 "[!部]" 里面只能填 "部" ,填写其他任何字符(如改成 "[!第]" )都会导致出现奇奇怪怪的问题。请问 sylun 大神是否能帮我解个惑,这里面是个啥原理?

另回复 413191246se 老师:你的VBA脚本我搜到了,的确也是可以实现我需要的功能的,只是有些杀鸡用牛刀了,哈哈。我发这个帖子,一方面为了解决问题,其实更重要的是想解决困惑,也就是为什么 "第?{2,3}部分" 这样的写法不能实现功能?

TA的精华主题

TA的得分主题

发表于 2019-9-21 17:06 | 显示全部楼层
齿下问 发表于 2019-9-18 23:50
感谢 sznie 与 sylun 提供的方法,我用 "第[!部]{2,3}部分" 的确实现了想要达到的查询效果!
不过我还是没 ...

这个问题似乎比较深层次。如果不是搞研究,知道行不行就行了。像“第[!部]{2,3}部分”这样的查找代码,这里通配符的锚点就是紧跟其后的那个字符,中括号内的代码就是除了该锚点字符的其他所有字符。如果用问号,它也可以匹配这个锚点字符,也许word认为这样会构成逻辑冲突。
当然,你的想法也不无道理,因为在金山WPS中用问号好像可行

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-9-23 08:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sylun 发表于 2019-9-21 17:06
这个问题似乎比较深层次。如果不是搞研究,知道行不行就行了。像“第[!部]{2,3}部分”这样的查找代码,这 ...

好的,大神都这么说了,那我就不深究了,谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 17:20 , Processed in 0.047089 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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