ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 敬请斧正:word查找匹配目标文本的一句表达式

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-7-2 18:20 | 显示全部楼层 |阅读模式
本帖最后由 weiyingde 于 2017-7-4 07:03 编辑

对下面的文本,按照标识的十个部分,分别进行匹配,并将其结果写入数组。
关键的一句有误,敬请斧正,谢谢。
代码如下:
sub 匹配十部分并写入数组()
Dim arr(),
Dim Appt As New PowerPoint.Application
ActiveDocument.Range.Select
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "晨读对韵[\((][一-隝]@[\))]^13[一-隝。^13]@。^13"‘'此为关键代码,问题就出在此处,请斧正。
        .Forward = True
        .MatchWildcards = True
    End With
   Do While Selection.Find.Execute
           n = n + 1
           ReDim Preserve arr(1 To n)
           arr(n) = Selection.Range.Text
  Loop
for i = 1 to UBound(arr)
   msgbox arr(i)
next
end sub

附搜索的文本如下。
晨读对韵(一)
天对地,室对家,落日对流霞。
黄莺对翠鸟,甜瓜对苦瓜。
狗尾草,鸡冠花。
白鹭对乌鸦。
门前栽果树,塘里养鱼虾。
有时三点两点雨,到处十枝五枝花。

晨读对韵(二)
优对劣,丑对美,肃静对喧哗。
光明对黑暗,谨慎对浮夸。
瓜子脸,葡萄牙。
异卉对奇葩。
知己存海内,朋友遍天涯。
黄梅时节家家雨,青草池塘处处蛙。

晨读对韵(三)
繁对简,少对多,淅沥对滂沱。
珊瑚对玛瑙,河蚌对田螺。
星妩媚,月婆娑。曲径对斜坡。
黄鹂歌婉转,绿柳舞婀娜。
芳林新叶催陈叶,流水前波让后波。

晨读对韵(四)
弦对管,鼓对锣,守卫对巡逻。
观光对借鉴,视察对观摩。
须奋斗,莫蹉跎。北海对东坡。
眼中沧海小,衣上白云多。
气似长虹贯玉宇,心如皓月映澄波。

晨读对韵(五)
萍对藻,菊对荷,黄豆对青稞。
桃枝对柳叶,放鹤对观鹅。
小夜曲,大风歌。潋滟对嵯峨。
举头红日近,回首白云遮。
坐地日行八万里,巡天遥看一千河。

晨读对韵(六)
勤对懒,俭对奢。琐碎对繁苛。
冰清对玉润,地利对人和。
行踽踽,笑呵呵。欣赏对吟哦。
下笔即千字,读书倾五车。
生有光辉照日月,死留正气壮山河。

晨读对韵(七)
庭对院,井对池,落絮对游丝。
飞禽对走兽,骏马对雄狮。
三国志,七步诗。错落对参差。
行到水穷处,坐看云起时。
侧身天地更怀古,独立苍茫自咏诗。

晨读对韵(八)
行对止,善对慈,本性对天资。
粗心对大胆,益友对良师。
孙行者,祖冲之。鲁迅对徐迟。
笔扫龙蛇字,胸藏锦绣词。
偏多热血偏多骨,不悔真情不悔痴。

晨读对韵(九)
河对海,涧对溪,远近对高低。
奇珍对异宝,琥珀对琉璃。
桃灼灼,柳依依。龙眼对马蹄。
掬水月在手,拈花香满衣。
几处早莺争暖树,谁家新燕啄春泥。

晨读对韵(十)
来对往,密对稀,来日对往昔。
眼明对手快,心旷对神怡。
千里马,五更鸡。暮霭对晨曦。
高谈惊左右,博学贯中西。
天上月悬千古镜,池中星照一盘棋。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-2 18:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
改为:
.Text = "晨读对韵[\((][一-隝]@[\))]^13[!)]@[^13]@"
也没有相应效果。

TA的精华主题

TA的得分主题

发表于 2017-7-2 19:21 | 显示全部楼层
不要写那么复杂的通配符。
就直接匹配标题,然后去适配
晨读对韵([\((]{1})([一二三四五六七八九十]{1,})([\))]{1})

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-2 19:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
用.Text = "晨*[!\))]@[^13]@"
也只能匹配两行文本
再请大侠指教

TA的精华主题

TA的得分主题

发表于 2017-7-2 19:27 | 显示全部楼层
本帖最后由 duquancai 于 2017-7-2 20:07 编辑
weiyingde 发表于 2017-7-2 18:43
改为:
.Text = "晨读对韵[\((][一-隝]@[\))]^13[!)]@[^13]@"
也没有相应效果。

》》》》》》》》》》》》》》》》》》》》》》

Sub shishi()
    s = Replace(ActiveDocument.Content, vbCr, "\r")
    Set D = CreateObject("htmlfile"): Set W = D.parentWindow
    W.execScript "a='" & s & "'.match(/晨读对韵[\s\S]+?(?=晨读对韵|$)/g);"
    For i = 0 To W.eval("a.length") - 1
        MsgBox W.eval("a[" & i & "]")
    Next
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-7-2 19:36 | 显示全部楼层
本帖最后由 huanglicheng 于 2017-7-2 19:54 编辑
weiyingde 发表于 2017-7-2 19:22
用.Text = "晨*[!\))]@[^13]@"
也只能匹配两行文本
再请大侠指教

不知这样可否

  1. Sub 匹配十部分并写入数组()
  2.     Dim arr()

  3.     Dim myText$
  4.     myText = ActiveDocument.Range.Text & "晨读"

  5.     Set regex1 = CreateObject("VBSCRIPT.REGEXP")    'RegEx为建立正则表达式
  6.     With regex1
  7.         .Global = True    '设置全局可用
  8.         .Pattern = "晨读.+?(?=晨读)"
  9.     End With
  10.     Set c = regex1.Execute(myText)
  11.     ReDim arr(0 To c.Count - 1)
  12.     For i = 0 To c.Count - 1
  13.         arr(i) = c.Item(i)
  14.     Next i

  15. End Sub
复制代码



评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-2 19:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
用.Text = "晨*。^13"
也只能匹配两行文本
再请大侠指教

TA的精华主题

TA的得分主题

发表于 2017-7-2 19:54 | 显示全部楼层
weiyingde 发表于 2017-7-2 19:53
用.Text = "晨*。^13"
也只能匹配两行文本
再请大侠指教

你看看我那样可行不

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-2 20:10 | 显示全部楼层
谢谢两位,我试试,能否不用正则实现这个效果?

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-7-2 20:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
loquat 发表于 2017-7-2 19:21
不要写那么复杂的通配符。
就直接匹配标题,然后去适配
晨读对韵([\((]{1})([一二三四五六七八九十]{1,} ...

你这是匹配一行文本,而非匹配以这一行为第一段的一部分文本。
比喻:
要匹配
晨读对韵(一)
天对地,室对家,落日对流霞。
黄莺对翠鸟,甜瓜对苦瓜。
狗尾草,鸡冠花。
白鹭对乌鸦。
门前栽果树,塘里养鱼虾。
有时三点两点雨,到处十枝五枝花。
而非只匹配
晨读对韵(一)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 07:03 , Processed in 0.028403 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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