在下面的HTML部分中,无论何时找到文本,我都希望用增量变量替换:
<li class="cat-item">
<a href="#" >Beautiful Reclessness</a>
</li>
<li class="cat-item">
<a href="#" >Comfort vs. Appearance</a>
</li>
<li class="cat-item">
<a href="#" >Highlights of the Runway</a>
<ul class='children'>
<li class="cat-item">
<a href="#" >Christian Louboutin Show</a>
</li>
<li class="cat-item">
<a href="#" >Givenchy F/W 2016</a>
</li>
<li class="cat-item">
<a href="#" >Spring by Gaultier</a>
为此使用x++
增量:
<li class="cat-item">
<a href="#" >x1</a>
</li>
<li class="cat-item">
<a href="#" >x2</a>
</li>
<li class="cat-item">
<a href="#" >x3</a>
<ul class='children'>
<li class="cat-item">
<a href="#" >x4</a>
</li>
<li class="cat-item">
<a href="#" >x5</a>
</li>
<li class="cat-item">
<a href="#" >x6</a>
在Notepad ++或Vim中(是否在> <
之间寻找)是否可以使用REGEX查找文本内容并将其替换为x
计数器?
答案 0 :(得分:4)
简单的vim答案:
vim filename
:let num=1
:g/href/execute printf("normal! citx%d", num) | let num=num+1
:global
命令允许执行一条与模式匹配的所有行的操作(在本例中为href
)。我们要执行的操作是将<a>
标记内的文本更改为x
,然后是num
的内容,并递增num
。
execute
让我们从字符串构建命令行;我经常与printf()
结合使用,因为我觉得它更易于阅读。 normal!
是一个Ex命令,可让我们执行普通模式命令。 cit
是一种从正常模式“更改标签内部”的方法。然后,我们只向它提供适当的替换文本(x%d
)并增加计数器。
如果您想知道我是怎么想到的,这在vimmer中是一个非常完善的模式。在实践中,大概花了我大约一分钟才能完成整个序列(如果我更频繁地使用它会更快),因此它不是“花费30分钟尝试编写好的正则表达式”的答案之一-这可以是如果编辑人员对vim的基本知识掌握得很好,那么可以在现场编辑会议中进行,无需过多考虑。
答案 1 :(得分:1)
希望有帮助。
在regex101或其他地方开发正则表达式并编写脚本
i=0
def increment(match):
global i
i=i+1
return "x"+str(i)
editor.rereplace('(?<=>)\\b[^><]+', increment)
保存并运行您的脚本:插件> python脚本>脚本>增量
答案 2 :(得分:0)
vim的方法略有不同:
:let c=1 | g/a href="#" >\zs.*\ze</ s//\='x'.c/g | let c+=1
使用\zs
和\ze
,我们可以选择要删除的图案。柜台
将给出与空格连接的数字序列:
\='x'.c ................. concatenate 'x' with the counter