安全
安全工程
消防工程
研究生
对于上面的文本我想用(?<=\n)\S{2,4}
匹配之
用$1\n
替换之
使之变成下面的效果
安全
安全工程
消防工程
研究生
然而匹配能成功但无法替换
请告诉我原因,另外我知道可以不用环视的正则也能完成这个任务,但我这里想知道无法替换的原因
(?<=xxx) //肯定逆序环视,只匹配一个位置,这个位置在xxx的后面
(xxx) //自动命名分组捕获,将xxx匹配到的内容捕获到分组,并自动命名为$1
明白了吗?
和环视没有关系。因为你没有分组,也就不存在 $1
。
(?<=\n)(\S{2,4})
即可。
另外这里的环视明明应该用 ^
的(多行模式下),^
就是做这个的(而且还能匹配首行开头)……