【问题标题】:Regex Search and Replace spaces into underscores正则表达式搜索并将空格替换为下划线
【发布时间】:2013-08-15 16:57:01
【问题描述】:

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

【问题讨论】:

  • 您的问题中没有粗体文​​件名。也许 SO 的语法突出显示取代了它?你想在哪里替换空格?在 src 属性里面的值?
  • 我只想在文件名中替换它。所以 Pizza Newbron Session 33psfb.jpg 会变成 Pizza_Newbron_Session_33psfb.jpg

标签: regex replace sublimetext


【解决方案1】:

碰巧,我不久前写了一个 sn-p 来用下划线替换空格在选择范围内

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

另存为Packages/User/replace_space_with_underscore.sublime-snippet。然后,打开Preferences -&gt; 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,点击 CtrlShift-,它们将被替换为下划线。绝对比正则表达式工作更多,但如果 Phillip Schmidt 的 answer 是真的,这可能是最好的方法。祝你好运!

【讨论】:

  • 我为这个确切的 Sublime 问题和答案梳理了大约 45 分钟的问题。这节省了我 小时 在我正在处理的博客导出上手动替换空格的时间。很棒的小sn-p,你在那里组装,谢谢!
  • @maxinacube 很高兴我能帮上忙 :)
【解决方案2】:

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

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

正向预测

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

\s(?=(\w+))

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

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

外括号允许此正则表达式意味着生成的匹配项将输入表达式的下一部分,即否定前瞻。

负预测

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

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

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

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

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

第二次正面预测

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      • 2016-09-22
      • 1970-01-01
      • 1970-01-01
      • 2016-02-26
      • 2011-07-18
      • 1970-01-01
      相关资源
      最近更新 更多