正则表达式搜索并将空格替换为下划线

时间:2013-08-13 21:54:43

标签: regex replace sublimetext

我有一个包含大量网址的文件,我正在尝试搜索并替换空格并将其更改为下划线。

以下是文本的一些示例,我只想将下划线添加到文件名中。

<img style="width: 800px;" src="http://example.org/wp-content/uploads/2013/08/6K5A8111 to print.jpg" alt="" />

<img style="width: 800px;" src="http://example.orgv/wp-content/uploads/2013/08/Pizza Newbron Session 33psfb.jpg" alt="" />

我正在尝试使用Sublimetext的搜索和替换使用正则表达式,但我似乎无法找到要使用的模式。任何帮助,将不胜感激。

3 个答案:

答案 0 :(得分:2)

碰巧的是,我不久前写了一段代码,用选择中的下划线替换空格

<snippet>
    <content><![CDATA[${SELECTION/\s/_/g}]]></content>
</snippet>

将其另存为Packages/User/replace_space_with_underscore.sublime-snippet。然后,打开Preferences -> Key Bindings - User并添加以下快捷方式:

{ "keys": ["ctrl+shift+-"], "command": "insert_snippet", "args": { "name": 
    "Packages/User/replace_space_with_underscore.sublime-snippet" } }

如果这是您唯一的自定义键绑定,则必须用[]方括号括起来,所以它看起来像这样:

[
    { "keys": ["ctrl+shift+-"], "command": "insert_snippet", "args": { "name": 
        "Packages/User/replace_space_with_underscore.sublime-snippet" } }
]

现在,您可以突出显示包含空格的网址,点击 Ctrl Shift - ,它们将被替换为下划线。肯定比正则表达式更多的工作,但如果菲利普施密特的answer是真的,这可能是最好的方法。祝你好运!

答案 1 :(得分:1)

我实际上并不认为只用一次替换就能以合理的方式实现这一点。您可能希望全局用下划线替换所有空格,然后用“alt 替换”alt 等等。

答案 2 :(得分:1)

如果你的标签都是图像,格式与上面的标签类似,你可以使用正面和负面的前瞻在一个正则表达式中完成这个。

\s(?=(\w+))(?!style|alt|src|\d+px)

积极前瞻

此正则表达式的第一步是查找空格,后跟一个或多个字母数字字符。

\s(?=(\w+))

此表达式将找到以下匹配项:

  • “img”和“style”之间的空格
  • “width”和“800px”之间的空格
  • src之前的空格
  • 文件名中的空格
  • 文件名和alt之间的空格

这个正则表达式的外括号允许表示结果匹配将输入表达式的下一部分,即负前瞻。

否定前瞻

此步骤否定了我们不感兴趣的匹配项:

(?!style|alt|src|\d+px)

另一种选择,就是使用两个积极的前瞻。这种方法会给你一个最终的正则表达式,如下所示:

\s(?=(\w+))(?=\w+(\s|\w)*\.[jpg])

此表达式的第一部分与上述相同。第二个前瞻是更通用的,寻找一个字母数字字符开始,然后是多个字母数字字符或空格,然后是.jpg扩展名。

第二次积极前瞻

(?=\w+(\s|\w)*\.[jpg])