Regex 如何在记事本++中用正则表达式替换子字符串的每个奇数出现?

Regex 如何在记事本++中用正则表达式替换子字符串的每个奇数出现?,regex,notepad++,Regex,Notepad++,我想改变一下 <evenInstance><evenInstance><evenInstance><evenInstance><evenInstance> <oddInstance><oddInstance><oddInstance><oddInstance><oddInstance><oddInstance> 以及替代: \1even\2 但我不知道如何处理

我想改变一下

<evenInstance><evenInstance><evenInstance><evenInstance><evenInstance>
<oddInstance><oddInstance><oddInstance><oddInstance><oddInstance><oddInstance>
以及替代:

\1even\2

但我不知道如何处理奇怪的事件。非常感谢您的帮助。

第一个模式可能会缩短为

odd\Kodd(?=(?:oddodd)*$)
替换为偶数

结果

偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶

对于第二种模式,您可以使用:

even(?=(?:eveneven)*$)
替换为奇数

结果

奇偶奇偶


第一种模式可以缩短为

odd\Kodd(?=(?:oddodd)*$)
替换为偶数

结果

偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶偶

对于第二种模式,您可以使用:

even(?=(?:eveneven)*$)
替换为奇数

结果

奇偶奇偶


这是最快的方法。 使用\G构造

s?:偶数^\G.*?偶数。*?\Keven

格式化

 (?s)
 (?:
      even
   |  
      (?! ^ )
      \G 
      .*? even .*? \K even
 )
基准

Regex1:   (?:even|(?!^)\G.*?even.*?\Keven)
Completed iterations:   3  /  3     ( x 1000 )
Matches found per iteration:   186
Elapsed Time:    1.02 s,   1023.95 ms,   1023953 µs
Matches per sec:   544,946

这是最快的方法。 使用\G构造

s?:偶数^\G.*?偶数。*?\Keven

格式化

 (?s)
 (?:
      even
   |  
      (?! ^ )
      \G 
      .*? even .*? \K even
 )
基准

Regex1:   (?:even|(?!^)\G.*?even.*?\Keven)
Completed iterations:   3  /  3     ( x 1000 )
Matches found per iteration:   186
Elapsed Time:    1.02 s,   1023.95 ms,   1023953 µs
Matches per sec:   544,946