【问题标题】:regex replace zero or more spaces at the end of a line with exactly two spaces正则表达式用两个空格替换行尾的零个或多个空格
【发布时间】: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 可以有两个或更多空格,但仍然只有两个空格会更干净。最好不要对三倍或更多空格进行任何额外的搜索/替换。

【问题讨论】:

    标签: regex notepad++ markdown


    【解决方案1】:

    我会这样做:

    查找内容:(?<=\S)\h*$
    替换为:(两个空格)

    【讨论】:

    • 这也会在空行上放置双空格,并在已经有尾随双空格的非空行中添加尾随双空格。
    • @RolfBly:请编辑您的问题并提供示例文本和预期结果。
    • @CHARLIE 瞧,先生
    猜你喜欢
    • 2013-09-21
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 2016-11-07
    • 2018-09-19
    • 1970-01-01
    • 2021-02-01
    相关资源
    最近更新 更多