0

我有一个包含一堆 url 的文件,我正在尝试搜索和替换空格并将它们更改为下划线。

下面是一些文本示例,我只是想在文件名中添加下划线。

<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 的搜索和替换来做到这一点,但我似乎找不到要使用的模式。任何帮助,将不胜感激。

4

3 回答 3

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" } }
]

现在,您可以突出显示包含空格的 URL, hit CtrlShift-,它们将被替换为下划线。绝对比正则表达式工作更多,但如果 Phillip Schmidt 的回答是真的,这可能是最好的方法。祝你好运!

于 2013-08-13T22:44:47.243 回答
2

如果您的标签都是图像,并且格式与上面的标签类似,您可以使用正负前瞻在单个正则表达式中完成此操作。

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

积极前瞻

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

\s(?=(\w+))

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

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

外括号允许此正则表达式意味着结果匹配将馈送到表达式的下一部分,即否定前瞻。

负前瞻

这一步否定了我们不感兴趣的匹配:

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

另一种选择是使用两个积极的前瞻。这种方法会给你一个看起来像这样的最终正则表达式:

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

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

第二次积极前瞻

(?=\w+(\s|\w)*\.[jpg])
于 2013-08-13T23:32:39.967 回答
1

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

于 2013-08-13T21:57:02.253 回答