搜索
bottom↓
回复: 10

求助,一个替换html中空格的正则表达式代码

[复制链接]

出0入4汤圆

发表于 2021-9-13 19:23:09 | 显示全部楼层 |阅读模式
本帖最后由 thepresent 于 2021-9-13 19:24 编辑

我使用一个onenote的插件,NoteHighlight,把C语言的代码转换成html格式,生成之后放到剪贴板,手动往onenote里面粘贴,发现有一些空格识别不了,影响代码的阅读体验。调式了NoteHighlight的源码,发现highlight转换代码的时候,没有把空格转换成“ ”的形式。我想改一下源码,发现现在的问题是要找到要替换的空格,然后替换掉。就以下面半行代码为例:
  1. STATIC int tpHandleSplitCycle(TP_STRUCT * const tp,
复制代码

生成的html格式是这个样子的:

然后贴到onenote里面的效果是这样的:

可以看到,里面有些空格没有隔开。如果用代码一个个地查找这些空格的话,效率上可能有影响。
麻烦大家看一下,有没有可能用正则表达式来实现替换,将空格替换成:" "。替换图中的红字1到5的位置的空格,位置6的空格不替换。
谢谢大家。
  1. <pre style="color:#404040; background-color:#f8f8f8; font-size:10pt; font-family:'Courier New';">STATIC <span style="color:#0070e6">int</span> <span style="color:#b030f0">tpHandleSplitCycle</span><span style="color:#a21b5c">(</span>TP_STRUCT <span style="color:#a21b5c">*</span> <span style="color:#0070e6">const</span> tp<span style="color:#a21b5c">,</span></span><br /></span>
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)

出0入984汤圆

发表于 2021-9-13 19:34:20 | 显示全部楼层
本帖最后由 Himem 于 2021-9-13 19:36 编辑

如果生成的html先用浏览器打开,再从浏览器复制呢

出0入0汤圆

发表于 2021-9-13 19:53:27 | 显示全部楼层
不要用插件,直接将c代码黏贴到evernote,然后从evernote复制黏贴到onenote看看

出0入33汤圆

发表于 2021-9-13 20:33:52 | 显示全部楼层
楼主,你这段代码符合条件的空格不止5个啊,有16个。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入4汤圆

 楼主| 发表于 2021-9-13 20:47:40 来自手机 | 显示全部楼层
vtte 发表于 2021-9-13 20:33
楼主,你这段代码符合条件的空格不止5个啊,有16个。

是啊,中间的空格肯定也不能替换的。我的想法是能不能用正则表达式匹配<span>与</span>之间空格,从而实现一次替换。

出0入4汤圆

 楼主| 发表于 2021-9-13 20:49:55 来自手机 | 显示全部楼层
电子喵星人 发表于 2021-9-13 19:53
不要用插件,直接将c代码黏贴到evernote,然后从evernote复制黏贴到onenote看看

我用这个插件是因为这个是直接集成到onenote里面的,代码开源,我自己加了点功能,然后再配合onenote的链接功能,做代码笔记挺好用的

出0入4汤圆

 楼主| 发表于 2021-9-13 20:54:44 来自手机 | 显示全部楼层
Himem 发表于 2021-9-13 19:34
如果生成的html先用浏览器打开,再从浏览器复制呢

是个办法,不过我不太想用这种方案,这样的话效率应该会受影响吧,还不如直接写代码遍历替换

出0入4汤圆

发表于 2021-9-13 21:02:39 | 显示全部楼层
本帖最后由 aleyn 于 2021-9-13 21:04 编辑

正则表达式: (?<=[>]|([>]\w*))\s+(?=[<]|(\w*[<]))

在线测试: https://c.runoob.com/front-end/854/
共找到 5 处匹配:

替换之后 : <pre style="color:#404040; background-color:#f8f8f8; font-size:10pt; font-family:'Courier New';">STATIC&nbsp;<span style="color:#0070e6">int</span>&nbsp;<span style="color:#b030f0">tpHandleSplitCycle</span><span style="color:#a21b5c">(</span>TP_STRUCT&nbsp;<span style="color:#a21b5c">*</span>&nbsp;<span style="color:#0070e6">const</span>&nbsp;tp<span style="color:#a21b5c">,</span></span><br /></span>

出0入33汤圆

发表于 2021-9-13 21:15:33 | 显示全部楼层
我习惯了使用emEditor处理文本。
查找:(?<=>)([^<> ]*?)\s+([^<> ]*?)(?=<)
替换:\1&nbsp;\2


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入4汤圆

 楼主| 发表于 2021-9-13 21:45:44 来自手机 | 显示全部楼层
aleyn 发表于 2021-9-13 21:02
正则表达式: (?]|([>]\w*))\s+(?=[

谢谢!试了一下,正是我想要的。
结帖。

出0入4汤圆

 楼主| 发表于 2021-9-13 21:47:32 来自手机 | 显示全部楼层
vtte 发表于 2021-9-13 21:15
我习惯了使用emEditor处理文本。
查找:(?)([^ ]*?)\s+([^ ]*?)(?=

谢谢!这个替换里的\1和\2用代码的话也要带着吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-17 00:09

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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