Skip to main content
 首页 » 编程设计

python之Notepad++ 正则表达式每隔一个字符位置插入随机字母或数字

2024年11月24日30yyy_WW

我希望在 Notepad++ 中找出一个简单的搜索和替换,通过每秒(“其他”)字符用随机字母和数字乱丢文本来稍微混淆文本,然后能够用另一个宏再次反转它。

所以:

banana 

会变成:

bma0ndaNn4aR 

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

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

...

到目前为止我找到了这个方法:

(?<=.)(?!$) 

How to insert spaces between characters using Regex?

但据我所知,这实际上并没有捕获任何东西,所以我不能用它来替换我发现的用于打印随机字母和数字的表达式,例如:

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])$ 

我确信对此进行调整会奏效,然后我可以通过将相同的搜索替换为 \b 来扭转这一切。

请您参考如下方法:

有更好的方法,但您可以使用以下 python 原型(prototype)作为起点来创建您自己的脚本:

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) 

解释:

编码:

  • [x for x in inputText] 将从输入字符串生成一个字符数组
  • random.choice(string.ascii_letters+string.digits) 取一个字符 来自 string.ascii_letters 和 string.digits
  • 的联合
  • x + random.choice(string.ascii_letters+string.digits) 通过将输入的每个字符与生成的字符连接起来创建 2 个字符字符串。
  • ''.join() 操作将允许您从 char 数组创建一个字符串

解码:

  • [x for x in obfuscatedText][0:len(obfuscatedText)-1:2] 将允许您仅获取
  • 位于索引 0,2,4,6,... 的字符
  • ''.join() 操作将从 char 数组重新生成一个字符串

执行:

$ python obfuscate.py  
biaLncaIn4aE 
banana