使用RegEx将文本中的十六进制值转换为ascii字符

时间:2017-05-16 17:32:07

标签: regex vba ms-access notepad++

我负责维护和更新Microsoft Access内置数据库的项目。现在我使用Notepad ++的正则表达式替换功能将其VBA代码中作为字符串编写的查询重新格式化为可以直接运行的SQL查询。

我正在处理的当前作品正在转换其

的常用用法
    Chr(&Hxx)

其中' xx'是一个两位十六进制值,用于表示基于值的ASCII字符。

我尝试过使用搜索/替换配对

    [Cc]hr\(\&[Hh]([\da-fA-F]{2,2})\)

    \x($1)
似乎应该将十六进制值提取为$ 1,然后将ASCII值渲染为一个字符,而是生成一个' x'后跟两位十六进制值。它可能只是在与文字一起使用时才有效,而不是从文本中拉出替换值。

关于如何将文本中的十六进制值转换为相应的ASCII字符的任何想法?

1 个答案:

答案 0 :(得分:3)

正则表达式匹配模式的字符串,您可以使用这些匹配项来执行替换。

您的模式 将十六进制值提取为$1 ...然后将其替换为$1 ...这是您提取的确切十六进制值

问题在于你需要一段逻辑来解释捕获的十六进制值,转换为它们的角色表示 - 一个正则表达式不知道如何要做到这一点。不管是任何匹配

可以做的是执行多次替换,每次匹配不同的十六进制值,并将其替换为等效字符,例如:

[Cc]hr\(\&[Hh]22\)

"替换它(& H22将是ASCII 34,双引号字符)。

如果您不能这样做并且要求采用更自动化的方式,那么您需要编写一个脚本来执行此操作,无论您喜欢哪种语言。