我需要在第 10 至 31 位之间搜索“FE45”,然后将第 3 至第 6 位之间的字符替换为 zzzz。
示例文件:
123AAA345FE45D
234BBB335DDFFFEEDFE45E
345CCC234ERFDF3FR06G
我的希望 :-)
123000345FE45D
234000335DDFFFEEDFE45E
345000234ERFDF3FR06G
我该如何修改这个表达式来得到上述结果?
提前致谢!
答案1
用于()
创建组,然后可以按其出现顺序进行引用
寻找:
(b490)(.{2})(.{5})
代替:
\1\2ZZZZZ
答案2
- Ctrl+H
- 找什么:
^...\K...(?=.{0,27}FE45)
- 用。。。来代替:
000
- 检查匹配大小写
- 检查环绕
- 检查正则表达式
- 请勿检查
. matches newline
- Replace all
解释:
^ : beginning of line
... : 3 any character but newline
\K : forget what we have seen until this position
... : 3 any character but newline
(?= : lookahead, zero length assertion, make sure we have after this position
.{0,27} : 0 up to 27 any character but newline
FE45 : literally FE45
) : end lookahead
给定示例的结果:
123000345FE45D
234000335DDFFFEEDFE45E
345CCC234ERFDF3FR06G