我正在尝试使用 gsar 用十六进制值替换文件中文本中的字符串,但我怀疑 gsar 是否可以解决这个问题:)
原文:
打印“这是打印” “打印” “*:;PRINT'”打印“打印” “打印”PrInT
“gsar”完成其工作后应该是:
XXXX“这是打印” “打印” “*:;PRINT'” XXXX“打印” “打印” XXXX
(XXXX代表十六进制值a5)
我只想用十六进制值 a5 替换单词“print”(不区分大小写),但前提是它不在引号之间。另外,请注意,引号与源文件中的十六进制值相同!(0x22)
代码:gsar -s“print”-r:x22 -o file.txt 当然也会替换引号之间的单词,但不会替换大小写不同的单词。
这可能吗?:)如果有人能帮助我,我会很高兴。
答案1
对于此类替换,最好先匹配我们想要保留的内容(即引号之间的值),然后断言失败,然后匹配其余部分。
这可以使用动词(*SKIP)
和来完成(*FAIL)
。
- Ctrl+H
- 找什么:
"[^"]+"(*SKIP)(*FAIL)|\w+
- 用。。。来代替:
XXXX
- 查看 环绕
- 查看 正则表达式
- Replace all
解释:
" # double quote
[^"]+ # 1 or more non double quote
" # double quote
(*SKIP) # skip what was matched
(*FAIL) # and consider the match failled
| # OR
\w+ # 1 or more word character
截图(之前):
截图(之后):