如何使用正则表达式查找和反转文件名的前两个单词,其中单词由 .或空格

How to find and reverse first two words of file name with regex where words are separated by . or whitespace

我正在尝试批量重命名文件名,找到文件名的前两个词(可以包括带有连字符和撇号的名称,并且这些词可以用空格或 . 分隔)。

然后我需要反转这些名称,用“.”分隔,并附加任何剩余的单词。

示例:

"Peter O'Toole hi res.jpg" 到 "O'Toole.Peter.hi res.jpg"

"Stanley Baker.jpg" 到 "Baker.Stanley.jpg"

"Daniel Day-Lewis.jpg" 到 "Day-Lewis.Daniel.jpg"

如果我使用:

([\w'-]+)

这让我明白了所有的话。但替换为:

$2.$1

无效。

我怎样才能捕获前两个文本,反转它们,然后只附加剩余的文本?

要匹配前 2 个单词,您可以使用锚点来断言字符串的开头。然后你可以使用你的捕获组两次,你的分隔符可以在两者之间。

如果分隔符是 space 或制表符,您可以使用:

^([\w'-]+)[ \t]+([\w'-]+)

那将匹配

  • ^ 字符串开头
  • ([\w'-]+) 捕获组 1
  • [ \t]+ 匹配 1+ 次 space 或制表符(在字符 class 中使用 \s 匹配白色 space 字符或仅使用一个 space 来匹配)
  • ([\w'-]+) 捕获组 2

并替换为:

.

Regex demo