用增量变量替换HTML文本元素

时间:2019-01-26 16:13:13

标签: regex vim notepad++

在下面的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计数器?

3 个答案:

答案 0 :(得分:4)

简单的vim答案:

  1. 打开文件-vim filename
  2. 设置便利变量-:let num=1
  3. 进行替换-: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)

希望有帮助。

  1. Download python script plugin
  2. 插件> python脚本>新脚本>另存为“ increment.py”

在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