如何在每对字符之间添加空格/分隔符。
eg 0x5C8934A3 --> 0x 5C 89 34 A3
我可以使用宏来完成,但由于字符串的长度太长,手动设置需要花费太长时间。
我知道如何进行查找,但无法正确地执行替换。请指导我如何操作。
[0][x][0-9A-F]+
match
0x5C8934A3
Notepad++的正则表达式功能非常有限,所以您需要使用类似于以下内容的工具:
搜索:
(..)
替换为
\1
(注意在\1
后面有一个空格!)
(..)
表示查找两个字符并存储它们
\1
获取第一个捕获组中存储的字符
这种简单解决方案的前提是只有这种字符串且没有其他内容。然后它会在单词后面添加一个不需要的空格。如果不想要,可以在之后将其删除。
我这里没有安装Notepad++,但在我的编辑器中,你可以搜索\B(?=(?:[0-9A-F]{2})+\b)
并将所有内容替换为一个空格。
解释:
该正则表达式的作用是匹配所有不在单词边界内的字符,后面跟着一串连续的两个十六进制数字,并且这个字符串必须出现在单词边界之前。将其替换为一个空格即可去除这些字符。\B # only match within words
(?= # Assert that from the current position...
(?: # ...the following can be matched:
[0-9A-F]{2} # a succession of two hexadecimal digits
)+ # once or more,
\b # ending at a word boundary.
) # End of lookahead
这个正则表达式将返回两个非换行符(\n
)字符的组。
.{2}
如果您想匹配 \n
,可以使用字符范围 [\s\S]
。
如果您希望明确匹配十六进制模式,可以使用...
^(0x)([\da-z]{2})+
(一定要使用i
模式修饰符。)
您没有指定语言,但是您可以使用空格字符连接匹配项或使用$0
进行替换(或者在JavaScript中保持整个匹配项的任何内容,例如$&
)。