匹配html <img/>标记中的空格(正则表达式)

时间:2018-01-31 11:00:16

标签: html regex

我有一堆html文件,其中img标记中的文件名包含空格()。 我需要在文本编辑器中用下划线(_)替换空格。 我正在使用这个正则表达式:

(?<=\/img\/)(\s)(?=.png")

但它不起作用! 这是一个预期结果的例子:

<img src="./img/setup3oval 7  1.png"/>

预期结果:

<img src="./img/setup3oval_7__1.png"/>

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

由于正则表达式所施加的限制,因此无法在单次运行中执行您要求使用正则表达式的操作。但你可以部分地做到这一点:

OR

您已经提到过您正在使用文本编辑器来运行此正则表达式。如果您正在使用Notepad ++之类的内容,则应该可以多次单击“替换”按钮,直到达到预期结果,并将文本替换为(?<=src=")(.*?)\s+(.*?)(?=\.) 。如果您的图像文件路径在它们之间没有太多的空白,那么问题就不会太大。

正则表达式的解释:

  • $1_$2 - 这是一个积极的外观,用于仅匹配此模式之前的字符串。我使用(?<=src=")属性作为参考,而不是src标记。
  • <img> - 这匹配两个文本块之间的任何空格。我使用了懒惰的量词来避免错误的匹配。我还将这些块包装在捕获组上,以便在替换时使用它们。
  • (.*?)\s+(.*?) - 这是一个积极的前瞻。文本将匹配,直到它到达一个点字符,字面意思。也就是说,假设线上没有任何其他点。如果情况不是这样,你应该改变这个断言。

演示: regex101.com

我还在Notepad ++上测试了这个正则表达式,多次点击替换按钮。达到了预期的结果。