Python 记事本++;Regex每隔一个字符位置插入随机字母或数字

Python 记事本++;Regex每隔一个字符位置插入随机字母或数字,python,regex,notepad++,Python,Regex,Notepad++,我希望在记事本++中找到一个简单的搜索和替换方法,通过每秒用随机字母和数字(“其他”)字符将文本稍微混淆,然后用另一个宏再次反转 因此: 将成为: bma0ndaNn4aR (b?a?n?a?n?a?) …然后可以通过使用退格删除所有其他字符来再次撤消此操作 到目前为止,我发现了这种方法: (?<=.)(?!$) 我确信对其进行调整会起作用,然后我可以通过将相同的搜索替换为\b来逆转这一切。有更好的方法,但您可以使用以下python原型作为起点来创建自己的脚本: import str

我希望在记事本++中找到一个简单的搜索和替换方法,通过每秒用随机字母和数字(“其他”)字符将文本稍微混淆,然后用另一个宏再次反转

因此:

将成为:

bma0ndaNn4aR
(b?a?n?a?n?a?)

…然后可以通过使用退格删除所有其他字符来再次撤消此操作

到目前为止,我发现了这种方法:

(?<=.)(?!$)

我确信对其进行调整会起作用,然后我可以通过将相同的搜索替换为
\b

来逆转这一切。有更好的方法,但您可以使用以下python原型作为起点来创建自己的脚本:

import string
import random

inputText = 'banana'

#encoding 
obfuscatedText = ''.join([x + random.choice(string.ascii_letters+string.digits) for x in inputText])
print(obfuscatedText)

#decoding
originalText = ''.join([x for x in obfuscatedText][0:len(obfuscatedText)-1:2])
print(originalText)
解释:

$ python obfuscate.py 
biaLncaIn4aE
banana
编码:

  • [inputText中的x代表x]
    将从输入字符串生成一个字符数组
  • random.choice(string.ascii字母+string.digits)
    需要一个字符 从
    string.ascii_字母
    string.digits
  • x+random.choice(string.ascii字母+string.digits)
    通过将输入的每个字符与生成的字符连接起来,创建2个字符字符串
  • '.join()
    操作将允许您从字符数组创建字符串
解码:

  • [x代表模糊文本中的x][0:len(模糊文本)-1:2]
    将只允许您获取
  • 位于索引
    0,2,4,6,…
  • '.join()
    操作将从字符数组中重新生成字符串
执行:

$ python obfuscate.py 
biaLncaIn4aE
banana

使用正则表达式搜索和捕获每个字符是很容易的。困难的部分是使用搜索/替换插入随机字符。顺便说一句,只需搜索单个字符,并在替换表达式中使用整个匹配项作为反向引用。我不知道notepad++的语法,但它类似于用
\1C
替换
,其中
C
是随机字符。正则表达式可以用来生成匹配的随机字符串,但我不知道有哪个简单的搜索/替换系统可以做到这一点。(我不知道最后一个正则表达式是用来做什么的,但我很确定它不会像你所希望的那样…)你可能需要考虑其他选项,比如你可以在文件上运行的外部脚本。因此,基本上使用Notepad++regex是为了搜索,但替换时最多可以使用“extended”?我应该考虑使用Python脚本吗?(我应该编辑这篇文章还是问一个新问题?)是的,我认为python脚本是这个用例的最佳选择。我还建议大家多读一点正则表达式匹配的工作原理——这是一门黑暗的艺术,不了解每个字符的功能就复制/粘贴示例会导致糟糕的结局。祝你好运谢谢实际上,我希望我能在Notepad++Python插件中加入一些东西,这些东西可以处理任何打开的文本。这似乎需要将文本放入PY文件中,而PY文件对此并不十分方便,或者有没有办法让“inputText”只处理打开的任何内容?@LDAsh:如何更改此脚本以读取文件并在转换之前将其放入变量?@LDAsh:并使我的脚本适应您的记事本++,我没有Windows机器,所以我不能真正测试它。对不起
$ python obfuscate.py 
biaLncaIn4aE
banana