ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何用正则表达式插入字符串?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-10-29 17:02 | 显示全部楼层 |阅读模式
大侠好!
     我在整理规章制度时,需要使用正则表达式插入字符串。烦请大侠指导。
     例如,一个文件中有“第一条”、“第二条”等,有的后面没有空格,有的后面空了格但空格数量有多有少,需要将“第一条”、“第二条”后面统一调整为空2格。麻烦指导。
QQ截图20191029170205.png

WORD文档.zip

11.96 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2019-10-31 09:25 | 显示全部楼层
查找替换,先查找第?条,替换时原内容加两个空格,再查找(第?条  {2} ) @,替换成\1

TA的精华主题

TA的得分主题

发表于 2019-10-31 11:21 | 显示全部楼层
这个不用正则也能实现吧
1.删除所有为第X条后的所有空格
2.查找行首为第X条的,并替换为第X条+空格,

TA的精华主题

TA的得分主题

发表于 2019-10-31 11:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 liuhoubin168 于 2019-10-31 11:34 编辑

查找:(第[一二三四五六七八九十百千零○〇]{1,7}条)([  ]{1,20})
使用通配符
替换:\1
第2次查找替换:
查找:^13(第[一二三四五六七八九十百千零○〇]{1,7}条)
替换:^p\1  (有2个空格)

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-1 09:38 | 显示全部楼层
不用正则的方法我已经实现,因为我还有涉及样式的引用,需要按每个段落分别进行处理,所以不用正则的方法显得很麻烦,每将每个段落的开头插入一个特殊字符,然后再引用样式,所以才想到用正则的方法,分段落进行替换。
前面几位老师的思路我也明白,就是不知道用正则的话具体的代码如何实现。烦请给出具体的代码

TA的精华主题

TA的得分主题

发表于 2019-11-1 14:43 | 显示全部楼层
楼主,请试用我的《通用模板宏》,里面有现成的《第一章》(条)宏。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-1 15:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
好的。谢谢!
您的模板已经下载,将好好学习领会。
再次衷心感谢

TA的精华主题

TA的得分主题

发表于 2019-11-1 20:40 | 显示全部楼层
word中避免使用正则替换,可能造成格式丢失。
纯属个人见解。

TA的精华主题

TA的得分主题

发表于 2019-11-2 20:03 | 显示全部楼层
  1. Sub 正则替换()
  2. With ActiveDocument.Content
  3.   n = .Paragraphs.Count
  4.   For i = n To 1 Step -1
  5.    Set rng = .Paragraphs(i).Range
  6.    bb = 正则查找(rng)
  7.    If bb <> "" Then
  8.       arr = Split(bb, "|")
  9.       rng.End = rng.Start + arr(1)
  10.       rng.Text = arr(0) & "  "
  11.    End If
  12.   Next i
  13. End With
  14. End Sub
  15. Function 正则查找(内容)
  16. Set reg = CreateObject("vbscript.regexp")
  17. With reg
  18.   .Pattern = "^(第[^第条]+条) *"
  19.   If .Test(内容) Then
  20.       Set aa = .Execute(内容)
  21.       正则查找 = aa(0).SubMatches(0) & "|" & aa(0).Length
  22.     Else
  23.       正则查找 = ""
  24.   End If
  25. End With
  26. Set reg = Nothing
  27. End Function
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 16:51 , Processed in 0.041107 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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