ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 使用通配符匹配求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-1-15 19:28 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 duquancai 于 2018-1-15 20:11 编辑

要完美的那就只能用正则了!
word通配符没有这么强大!
我提供一个word通配符的吧!不过肯定不完美!
<b[ut]{1,2}>
这个表达式可以匹配如下单词:
bu  bt  buu  btt  but  btu

但是楼主提供的目标文本是:“bt  but  bst  kut”
因此上面表达式也就只会匹配bt  but这两个单词了,表面上看认为上面word通配符表达式是正确的,其实不然!
我这里以此为例来说明一个重要问题:甭管是正则还是word通配符,表达式一定要结合目标文本,具体情况具体分析,因地制宜!
根据楼主的本帖的提问,又没有提供附件或者全面的“目标文本”,我也完全可以说: 针对楼主提供的目标文本来说,上面的word通配符表达式 是完美的!是完全能够解决问题的!

TA的精华主题

TA的得分主题

发表于 2018-1-15 19:32 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 duquancai 于 2018-1-15 20:49 编辑

用正则(不是word通配符)完美表达
\bbu?t\b
这个正则表达式(非Word通配符),在开启“全局”匹配模式下就只会匹配以下2个单词
bt  but

Word前台解决不了这个问题,后台VBA用正则可以解决(前提条件:Word文档为纯文本
下面代码就是查找bt  but这两个单词(可以在文档中多次出现且不区分大小写!)并高亮红色!
Sub test()
    Dim mt As Object, reg As Object, doc As Document, m&, n&
    Set doc = ActiveDocument
    Set reg = CreateObject("vbscript.regexp")
    reg.Global = True: reg.IgnoreCase = True
    reg.Pattern = "\bbu?t\b"
    doc.Content.HighlightColorIndex = 0
    For Each mt In reg.Execute(doc.Content.Text)
        m = mt.FirstIndex: n = mt.Length
        With doc.Range(m, m + n)
            .HighlightColorIndex = 6
        End With
    Next
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-1-16 10:54 | 显示全部楼层
杜老师出手,问题完美解决。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 09:45 , Processed in 0.021865 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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