starmars 发表于 2020-8-31 21:31:49

一个正则问题

请教一个正则表达式问题

想对MDX每个非跳转词头的内容加上一对div标签包裹住。
如:
原</>               
article
<link rel="stylesheet" type="text/css" href="naec.css"/>   
<a href="entry://0123">上一页</a> article (<a href="entry://0124">0124</a>) <a href="entry://0125">下一页</a>
<img class="left" src="0124.png"><img class="right" src="0124_2.png">
<a href="entry://0123">上一页</a> article (<a href="entry://0124">0124</a>) <a href="entry://0125">下一页</a>

转换后变成:
</>               
article
<div id="mydict">
<link rel="stylesheet" type="text/css" href="naec.css"/>   
<a href="entry://0123">上一页</a> article (<a href="entry://0124">0124</a>) <a href="entry://0125">下一页</a>
<img class="left" src="0124.png"><img class="right" src="0124_2.png">
<a href="entry://0123">上一页</a> article (<a href="entry://0124">0124</a>) <a href="entry://0125">下一页</a>
</div>

对于这种词头则不处理
</>
美国50州简况表
@@@LINK=2764

VimVim 发表于 2020-8-31 22:14:42

Vim的用法,仅供借鉴:

:%s/\(<\/>\)\n\(.*\)\n\(<link.*\)\n\(<a.*\)\n\(<img.*\)\n\(<a.*\)$/\1\r\2\r<div id="mydict">\r\3\r\4\r\5\r\6\r<\/div>/

mikeee 发表于 2020-8-31 22:54:45

https://regex101.com/r/zRecOA/1

starmars 发表于 2020-8-31 23:12:27

VimVim 发表于 2020-8-31 22:14
Vim的用法,仅供借鉴:

:%s/\(\)\n\(.*\)\n\(

不大懂Vim哦。有没有标准的正则替换方法?

mikeee 发表于 2020-9-1 00:23:19

正则引擎支持后视变长的话(如js、vscode)可以简练一点

https://regex101.com/r/zRecOA/2

Mandolin 发表于 2020-9-1 08:30:38

本帖最后由 Mandolin 于 2020-9-1 08:36 编辑

你这个替换位置是有明显特征的嘛,可以分两下呀,一次匹配中间多换行内容小心软件崩掉哟。

① 加标签头
替换:(<link rel="stylesheet" type="text/css" href="naec.css"/>)
为:<div id="mydict">\n\1

② 加标签尾替换:(下一页</a>)\n(<[^i])
为:\1\n</div>\n\2

(不过我很好奇为什么你要把样式引入代码「<link rel="stylesheet" type="text/css" href="naec.css"/>」包在内,难道不应该放外面吗)

页: [1]
查看完整版本: 一个正则问题