正则表达式:在Notepad++中交换单词位置。

4

我有以下格式的文本:

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个回答

7

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

  • ([^ ]+)将“name”与除空格之外的任何内容匹配,并将其放入组\1中(后跟一个空格)
  • ([^/]+)将“所有单词”与第一个/之前的任何内容匹配,并将其放入组\2
  • /([^/]+)/将任何位于//之间的内容匹配并放入组\3

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


1

尝试一下

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

1

你可以在 MS Word 中(我认为在 Visual Studio 中也一样)完成这个操作。以下是 MS Word 的方法:

Match String: (<*>) (<*>) (<*>) (<*>) (<*>) (<*>)
Replace String: \1 \2 \6 \3 \4 \5

在 MSWord 中,它并没有明确指出使用了正则表达式,但可能是在后台使用它。请注意,它无法匹配以反斜杠()开头的单词\word\。您可能需要从单词中删除反斜杠,以确保其正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接