我负责维护和更新Microsoft Access内置数据库的项目。现在我使用Notepad ++的正则表达式替换功能将其VBA代码中作为字符串编写的查询重新格式化为可以直接运行的SQL查询。
我正在处理的当前作品正在转换其
的常用用法 Chr(&Hxx)
其中' xx'是一个两位十六进制值,用于表示基于值的ASCII字符。
我尝试过使用搜索/替换配对
[Cc]hr\(\&[Hh]([\da-fA-F]{2,2})\)
\x($1)
似乎应该将十六进制值提取为$ 1,然后将ASCII值渲染为一个字符,而是生成一个' x'后跟两位十六进制值。它可能只是在与文字一起使用时才有效,而不是从文本中拉出替换值。
关于如何将文本中的十六进制值转换为相应的ASCII字符的任何想法?
答案 0 :(得分:3)
正则表达式匹配模式的字符串,您可以使用这些匹配项来执行替换。
您的模式 将十六进制值提取为$1
...然后将其替换为$1
...这是您提取的确切十六进制值
问题在于你需要一段逻辑来解释捕获的十六进制值,将转换为它们的角色表示 - 一个正则表达式不知道如何要做到这一点。不管是任何匹配。
可以做的是执行多次替换,每次匹配不同的十六进制值,并将其替换为等效字符,例如:
[Cc]hr\(\&[Hh]22\)
用"
替换它(& H22将是ASCII 34,双引号字符)。
如果您不能这样做并且要求采用更自动化的方式,那么您需要编写一个脚本来执行此操作,无论您喜欢哪种语言。