RegEx 查找 ASCII 字符

RegEx to find ASCII chars

我有一个这样的字符串-

"CRT\x00\x00\x00\x00\x00G3\x00\x00\x00\x00\x00\x00\x80\x10a\x06\x00\x00\x00\x00\x16@E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13"

我必须将 ASCII 字符(CRT, G3, a, @E) 转换为 HEX,其他字符 \x00 到 \x09 将分别替换为 0 到 9 并且 \x10 以上将显示为 10 及以上分别

所以我想做的是编写一个 RegEx 来查找与模式 /\x../g 不匹配的字符并将这些字符转换为十六进制并将 ascii 替换为十六进制,然后我可以用另一个 regEx 处理 \x.. 模式。

我写的模式是/[^\x\d\d]|[^\x\w\d]|[^\x\d\w]/g

这是我的正则表达式模式和 regex101.com- MyRegEx

上的字符串

如果您发现除一个问题外一切正常。问题-我没有得到 G (G3) 之后匹配的 3。

有人可以帮忙吗?提前致谢。

你可以使用像

这样的东西
(?!\x\d\d)(.)|..(..)

这会将单个 ASCII 字符捕获到第 1 组,并将 HEX 序列捕获到第 2 组。

如果第 1 组不为空,则应将其转换为两位十六进制代码并插入。否则应插入第二组()。

See an attempt to illustrate it here at regex101.