【发布时间】:2015-03-01 19:09:02
【问题描述】:
如何用匹配的非空格后跟两个空格来替换以非空格结尾的行,后跟零个或多个空格,保持换行符不变?
搜索这个:
(\S)(\h*)$
将匹配。替换为:
\1 (?# two spaces after the one)
将留下newline intact,这样没关系。我希望它会丢弃第二个匹配项(\h* 匹配除换行符以外的所有空格),但事实并非如此。它离开了第二场比赛,并在其前面添加了两个空格。
编辑:这是一个例子。为了清楚起见,[cr] 是换行符(在 windows 中为 CR + LF),[sp] 表示 1 个空格,[2sp] 表示 2 个空格,等等。
eggs[cr]
bacon;[2sp][cr]
[cr]
sausage.[3sp][cr]
应该变成
eggs[2sp][cr]
bacon;[2sp][cr]
[cr]
sausage.[2sp][cr]
用例是在 Notepad++ 中编写 markdown。我通常会忘记两个空格标记 我想用正则表达式搜索/替换来解决这个问题。我知道 markdown 可以有两个或更多空格,但仍然只有两个空格会更干净。最好不要对三倍或更多空格进行任何额外的搜索/替换。
【问题讨论】: