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
通过将输入的每个字符与生成的字符连接起来,创建2个字符字符串x+random.choice(string.ascii字母+string.digits)
操作将允许您从字符数组创建字符串'.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