Notepad++ 替换问题

14

我有一个文件,其中包含很多使用NotePad++编辑的文本。

例如:

<span class="italic">一些文本</span><span class="bold">更多文本或一些文本</span>

我想使用NotePad++的正则表达式替换功能来将

<span class"italic>一些文本</span> 替换为 <i>一些文本</i>, 将<span class="bold">更多文本或一些文本</span> 替换为 <b>更多文本或一些文本</b>

我能够匹配跨度文本,但是如何使用NotePad++替换它们呢?

查找<span class="italic">text12312</span> 并用 <i>[a-zA-Z]*</i> 替换它实际上会将"[a-zA-Z]*"文本放入替换后的字符串中,而不是"text12312"

3个回答

24

<span class="italic">([^<]+)</span> => <i>\1</i>

<span class="bold">([^<]+)</span> => <b>\1</b>

[^<]+ 匹配除了 < 以外的任意字符一次或多次,圆括号将其捕获在第1组中。 \1 将捕获的文本插入替换字符串中。


3

使用正则表达式如下:<span class="italic">([\w\s\d]+)</span>

替换为:<i>$1</i>

重要的一点是通过在括号中包围文本来创建匹配组,即([\w\s\d]+),它匹配一个或多个:

  • \w单词字符
  • \s空格字符
  • \d数字字符

现在在替换字符串中,使用$1引用第一个且唯一匹配的组。


<span class="italic">some text and <span class="custom"> some more </span> text </span> - Amarghosh
@Amarghosh,正如问题所述,OP只想在span标签之间匹配[A-Za-z],这就排除了检查嵌套span的必要性。 - krock
他使用 [a-zA-Z]*,而且他的样本文本包含数字 - 我只是在建议,如果他的文本足够大,迟早他会意识到使用正则表达式搜索和替换 HTML 并不是一个好主意。 - Amarghosh
你确定它在notepad++中工作吗?我这里不起作用。 - VOX
1
NPP在替换字符串中使用\1,而不是像大多数其他正则表达式工具一样使用$1。此外,NPP不支持类速记符(\w\s等)。如果它支持它们,那么\d将是多余的,因为\w相当于[A-Za-z0-9_] - Alan Moore

0

记事本中的示例: 尝试替换此文本: 0x0145测试 用此文本替换: [0x0145]测试

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接