我有这样一个列表:
2044
2045
2046
103
106
109
在任何长度为 3 位数字的行上,我只想在倒数第二位数字前插入“0”。
2044、2045、2046 保持不变,而 103 更改为 1003、1006、1009。
在 Notepad++ Regex 中,我有 Find:^[0-9][0-9][0-9]$,它似乎突出显示了所有三位数字的行,但我坚持在这些行的倒数第二个数字之前插入 0。
感谢您的时间!
答案1
您需要使用正则表达式“捕获组“ ( 之间的任何匹配()
)以及 “反向引用“以取回捕获的文本(\1
及\2
以下内容)。
在 regex101.com 这样的网站上玩一下,它也会为你解释正则表达式:
- 尝试:https://regex101.com/r/r09o0Q/3
- 寻找:
^([0-9])([0-9]{2})$
- 代替:
\10\2
后:
2044
2045
2046
1003
1006
1009
答案2
不使用群组的另一种方法(更有效率):
- Ctrl+H
- 找什么:
(?<=^\d)(?=\d\d$)
- 用。。。来代替:
0
- 检查环绕
- 检查正则表达式
- Replace all
解释:
(?<= # positive lookbehind, zerolength assertion that makes sure we have before current position:
^ # beginning of line
\d # 1 digit
) # end lookbehind
(?= # positive lookahead,zerolength assertion that makes sure we have after current position:
\d\d # 2 digits
$ # end of line
) # end lookahead
给定示例的结果:
2044
2045
2046
1003
1006
1009
屏幕截图: