【发布时间】:2018-02-12 07:22:42
【问题描述】:
所以我在正则表达式方面比较n00bish,并且做了一些练习。
我正在玩一个简单的“deobfucator”,它只寻找[dot] 或(dot) 或[at] 或(at)。不区分大小写,并且在匹配之前或之后有或没有任何数量的空格。
这是通常的:someemail [AT] domain (dot) com 类型的东西。我显然想把它变成someemail@domain.com。
我想出的正则表达式可以很好地匹配,但现在我想根据匹配替换为 . 或 @。
即
我希望匹配“点”组的组将其替换为文字.,并将匹配“at”组的组替换为文字@。
我知道我可以只编写 2 个不同(几乎相同)的 RegEx 并运行它们,但为了教育起见,我想看看我是否可以在一个 RegEx 中完成所有操作?
这是我想出的正则表达式(可能不是最小的,我也有兴趣看到):
+(\[|\()(dot)(\)|\]) +| +(\[|\()(at)(\)|\]) +
注意:在每个+ 之前都有一个空格,用于匹配空格。
我正在寻找的是什么我会用什么来正确地进行替换?
更新:对不起,忘记添加我正在使用的语言。在这种情况下,我使用了一个剪贴板实用程序,它可以在其输入上运行 RegEx(无论复制到剪贴板的内容),并且它使用的引擎是 C#/VB.NET。这个小项目的最终目标是能够复制“混淆”的电子邮件地址或 URL,并在其上运行 RegEx,以便将其设置在剪贴板上的“未混淆”状态。
也就是说,我确实倾向于在许多不同的语言上使用 RegEx,因此在语言之间转换它们通常不是问题。
【问题讨论】: