正则表达式:在记事本++中切换单词位置

时间:2012-10-01 21:09:19

标签: regex notepad++

我有以下模式的文字:

1 NAME word1 word2 wordn /words/
...
...
1 NAME word1 word2 wordn /words/

我需要一个正则表达式,将其重新排序为:

1 NAME /words/ word1 word2 wordn
...
...
1 NAME /words/ word1 word2 wordn

我试图在notepad++中执行此操作,但无法确定匹配 n 字数的正则表达式,直到字符/

请帮忙!

3 个答案:

答案 0 :(得分:5)

查找: ([^ ]+) ([^/]+)/([^/]+)/

  • ([^ ]+)将“名称”匹配为组\1中的任何空格(后跟空格)
  • ([^/]+)将“所有字词”匹配为第一个/成群组\2
  • /([^/]+)///之间的任何内容匹配到群组\3

替换为: /\3/ \2\1

答案 1 :(得分:1)

尝试

(?<=1 NAME )(\S+ ){n}/words/

答案 2 :(得分:1)

您可以在MS Word中执行此操作(我也认为在Visual Studio中)。以下是MS Word

中的完成方式
Match String: (<*>) (<*>) (<*>) (<*>) (<*>) (<*>)
Replace String: \1 \2 \6 \3 \4 \5

在MSWord中,它没有具体说正则表达式,但它可能在后端使用它。请注意,它有匹配\ word \的问题,即用反斜杠()凝视的单词。您可能希望从单词中删除反斜杠,以确保它有效。