我有一堆html文件,其中img标记中的文件名包含空格()。 我需要在文本编辑器中用下划线(_)替换空格。 我正在使用这个正则表达式:
(?<=\/img\/)(\s)(?=.png")
但它不起作用! 这是一个预期结果的例子:
<img src="./img/setup3oval 7 1.png"/>
预期结果:
<img src="./img/setup3oval_7__1.png"/>
非常感谢任何帮助
答案 0 :(得分:0)
由于正则表达式所施加的限制,因此无法在单次运行中执行您要求使用正则表达式的操作。但你可以部分地做到这一点:
OR
您已经提到过您正在使用文本编辑器来运行此正则表达式。如果您正在使用Notepad ++之类的内容,则应该可以多次单击“替换”按钮,直到达到预期结果,并将文本替换为(?<=src=")(.*?)\s+(.*?)(?=\.)
。如果您的图像文件路径在它们之间没有太多的空白,那么问题就不会太大。
正则表达式的解释:
$1_$2
- 这是一个积极的外观,用于仅匹配此模式之前的字符串。我使用(?<=src=")
属性作为参考,而不是src
标记。<img>
- 这匹配两个文本块之间的任何空格。我使用了懒惰的量词来避免错误的匹配。我还将这些块包装在捕获组上,以便在替换时使用它们。(.*?)\s+(.*?)
- 这是一个积极的前瞻。文本将匹配,直到它到达一个点字符,字面意思。也就是说,假设线上没有任何其他点。如果情况不是这样,你应该改变这个断言。演示: regex101.com
我还在Notepad ++上测试了这个正则表达式,多次点击替换按钮。达到了预期的结果。