如何使用正则表达式查找和反转文件名的前两个单词,其中单词由 .或空格
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
并替换为:
.
我正在尝试批量重命名文件名,找到文件名的前两个词(可以包括带有连字符和撇号的名称,并且这些词可以用空格或 . 分隔)。
然后我需要反转这些名称,用“.”分隔,并附加任何剩余的单词。
示例:
"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
并替换为:
.