找到第一个出现的空格并将其替换为“ - ”

找到第一个出现的空格并将其替换为“ - ”

我对正则表达式很陌生,如果能得到任何帮助我将非常感激。

我正在尝试批量重命名文件。

文件名为:

001 This is the first file.txt
002 This is the second file.txt
003 This is the third file.txt

我想把它们改成:

001 - This is the first file.txt
002 - This is the second file.txt
003 - This is the third file.txt

我应该使用的正则表达式语法是什么?

我将使用 Google Drive 中的多文件重命名工具,它使用 RegExp Tester 网站(http://iblogbox.com/devtools/regexp) 来测试语法并将替换文本作为单独的输入。

输入参数的屏幕截图

答案1

由于您使用的是 Windows,我建议使用 Notepad++ 解决方案:

  • Ctrl+H
  • 找什么:^\S+\h\K
  • 替换为:(-连字符和空格)
  • 查看 环绕
  • 查看 正则表达式
  • Replace all

解释:

^           # beginning of line
  \S+       # 1 or more non spaces
  \h        # 1 horizontal space
  \K        # forget all we have seen until this position

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

答案2

例如,如果您使用 sed,则可以使用:

's@[0-9]\{3\} @&- @'

这将匹配第一个 3 位数字后跟一个空格的匹配项,并通过反向引用将该匹配项替换为其自身(保留原样),并附加“-”。如果末尾没有“g”选项,则这将仅匹配 1 个匹配项。

为了便于阅读,我在这里使用了“@”作为分隔符,而不是标准的正斜杠。效果是一样的。

对于 RegExr.com,您可以选择“文本”按钮、“替换”工具和 PCRE RegEx 引擎(而不是 JavaScript),然后输入:

"([0-9]{3} )"

(不带引号)放入表达式字段,然后:

"\1- "

(不带引号,但带有尾随空格)放入 Tools 字段。将要修改的文本放入 Text 字段,并确保 global 是 Fl​​ags 中唯一选择的标志。

如果您的正则表达式替换工具由于某种原因不支持反向引用或保留匹配的文本(例如 Toto 答案中的 \K),则可以使用以下匹配表达式:

"Th"

(不带引号)和以下替换字符串:

"- Th"

(不带引号)前提是您的所有文件都完全遵循您描述的模式。

相关内容