使用 Notepad++ 和正则表达式替换字符串

Replace a string using Notepad++ and regex

我有这样的字符串:

<img src="http://www.example.com/app_res/emoji/1F60A.png" /><img src="http://www.example.com/app_res/emoji/1F389.png" />
<img src="http://www.example.com/app_res/emoji/1F61E.png" /><img src="http://www.example.com/app_res/emoji/1F339.png" />

我希望他们是这样的:

&#x1F60A; &#x1F389;
&#x1F61E; &#x1F339;

在 Notepad++ 中,我试过这个:

查找内容:^\s*<img src="http://www.example.com/app_res/emoji/(1F.*).png" />

替换为:&#x;

结果与预期不符:

&#x1F60A.png" /><img src="http://www.example.com/app_res/emoji/1F389;

如何最好地隔离正则表达式?

欢迎任何帮助!谢谢

您将不明确的 .greedy* 一起使用。不要在这里这样做,因为这往往会超出目标。

更具体。

文件名(在您的情况下)不包含点。让我们使用“除了点以外的任何东西”([^.]*) 而不是“任何东西”(.*):

^\s*<img src="http://www.example.com/app_res/emoji/(1F[^.]*).png" />

您可以在正则表达式模式下尝试以下查找和替换:

Find:    <img src=".*?/([A-Z0-9]+\.\w+"\s*/><img src=".*?/([A-Z0-9]+\.\w+"\s*/>
Replace: &#x; &#x;

这是一个有效的正则表达式 demo

尝试

查找:^<.*?/(1\w+).*?/(1\w+).* 替换:&#x; &#x;