我正在努力解决 Notepad++ 中的这个问题。我非常希望得到一个好的答案。
假设我有这一行:
watermelon:strawberries
我想要得到这个:
strawberries:watermelon
如何对 Notepad++ 中的所有行执行此操作?我尝试了不同类型的方法,但无法获得此结果。
答案1
假设您有some string
,后跟一个,:
后跟一个some string
,并且您想要两个字符串交换位置,则可以使用 RegEx 搜索和替换来使它们改变位置。
打开搜索和替换对话框 ( CTRL+ H)
在查找内容中:输入(.+):(.+)
在替换为:中输入\2:\1
在搜索模式的底部,将其更改为正则表达式。
命中Replace All则全部交换。
如果这不能给您带来所需的结果,请编辑您的问题并更好地说明您想要什么。现在它的解释有点开放,所以我假设整行中某处有一个 : 并且它会交换内容。可以有多个带有空格等的单词,并且所有单词都会与其交换。
正则表达式解释:
(
...)
是一组。每当您在正则表达式中添加一个组时,在替换中,您可以按输入顺序使用 \1、\2、\3 检索找到的内容。
.
是:查找任何字符。
+
是:前一次或多次。
所以(.+)
意味着,创建一个我们可以找到的组,并在这个组中查找任意字符一次或多次。
:
是:此字符没有意义,因此将其作为文字进行搜索:
。
再次(.+)
如上所述。
通俗地说,我们找到任何东西,直到找到一个:
,并将其放入一个组中,剩下的东西,我们放入另一个组中。这些分别是组 1 和组 2。
在我们的替换中,我们通过首先引用组 2 然后引用组 1 来交换组的位置,然后我们添加来:
再次分隔组。
答案2
- 按 CTRL-H 执行搜索/替换功能。
- 激活“正则表达式模式”(alt-g 或左下角的单选按钮)
- 在“查找内容”输入中输入以下正则表达式查找模式:(.*):(.*)
- 在“替换为”输入中输入以下正则表达式替换模式:$2:$1
- 使用右上角的按钮循环查找找到的结果或使用“全部替换”一次性替换所有结果。
几点说明:
- 如果某些行包含多个冒号,您可能需要修改模式。
- 您可能想了解有关正则表达式的更多信息。查看以下页面http://www.regular-expressions.info/或综合https://regex101.com/(或者使用谷歌——这是一个很大的话题)