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