【问题标题】:Match regex up to first space将正则表达式匹配到第一个空格
【发布时间】:2012-04-04 17:15:58
【问题描述】:

我必须填充商店的图片并获得图片文件夹,格式为BRL0368 Side.jpg5510 Dura Guard Carpet.jpg

现在我想做的是把所有这些都砍掉,这样我就可以尝试在 excel 中匹配零件编号,例如 "BRL0368.jpg""5510.jpg"

我有一个叫做正则表达式重命名器的东西,它接受一个正则表达式匹配和一个替换值 - 并将通过文件夹等递归并批量重命名。

不幸的是,目前我对正则表达式没有太多经验,所以这让我有点困惑 - 我尝试了许多不同的选项,但运气不佳。

我怎么说抓住第一部分(字母和数字)到第一个空格并转储其余部分?

这是我一直在尝试的 ([^\s]+) - 我也尝试过 \w 等。

【问题讨论】:

  • \w+ 应该适合你。您希望此解决方案使用哪种语言?
  • 感谢大家的帮助 - 我可以看到更多地理解正则表达式如何为我加快很多事情!

标签: regex


【解决方案1】:

这可能取决于所使用的语言,但这应该可以:

/^[^\s]+/

要捕获第一个单词和最后一个单词(扩展名),您可以使用以下表达式:

/(^[^\s]+).*?(\.\w+)$/

这是一个 javascript 演示来解决问题:http://jsfiddle.net/eDB2z/1/

【讨论】:

  • 感谢演示,这对正则表达式工具页面很有帮助,他们有这种东西作为示例;匹配模式:^img00(\d+)_sshot(_thumbnail)?替换模式:tutorial$2.$1
【解决方案2】:

这是您需要的: \w*(?= )

【讨论】:

  • 嗨 - 这似乎有一些效果,唯一的问题是它返回 say;5510 dura guard cabinet.jpg (returns = "Dura Gaurd Carpet.jpg") - 我要说的是“ 5510.jpg" - 我在开头尝试了 ^ 来匹配第一个单词 - 如果我有这个权利?
  • 在你的问题中,你没有说你需要离开.jpg 部分
  • 顺便说一句,您可以运行我的正则表达式并以编程方式仅获取第一个匹配项 + 文件扩展名。
  • 对此感到抱歉 - 有趣的是 - 当我将它放入 ^(\w*(?= )) 然后放入 $1 时。在替换模式中 - 它将单词拆分但仍然没有摆脱不匹配的(5510.dura guard cabinet.jpg) - 看起来匹配模式正在工作,只是替换/或我正在使用的方式工具?
  • 感谢您的所有帮助,这帮助我进一步了解了正则表达式。
猜你喜欢
  • 2014-05-14
  • 2010-11-26
  • 2017-10-28
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 2022-06-18
  • 2017-04-05
  • 1970-01-01
相关资源
最近更新 更多