正则表达式匹配空行

时间:2017-11-23 18:55:57

标签: regex

目前我有一个正则表达式,它将采用一组给定的换行符并压缩它们。我需要解决的一个挑战是modify this regex\n{2,}),以便在搜索多个换行符时仍然会忽略空格和制表符。

https://regex101.com/r/dEhyN3/2显示了我所指的一个很好的工作示例。这条线只包含一个空格,导致最终结果中有太多新行。

2 个答案:

答案 0 :(得分:2)

此答案可确保保留行开头的空格(如果它包含空白字符以外的其他内容)。

代码

See regex in use here

(?:\h*\n){2,}

注意:某些正则表达式引擎不允许\h,因此必须将其替换为[\t\p{Zs}],如果不支持Unicode字符类,则只需每个字符的列表,例如[\t ][^\S\n]

其他方法:

(?:\n(?:[^\S\n]*(?=\n))?){2,}
(?:\n(?:\s*(?=\n))?){2,}
\h*\n(?:\h*\n)+

结果

输入

**Language**

 - Added four languages: Italian, Portuguese (Brazil), Spanish (Mexico) and Chinese (Traditional)





**Bug fixes**


 - Fixed camera jittering for passenger sitting on the back of a motorcycle with sidecar
 - Fixed camera jittering for passenger sitting on the back of a motorcycle with sidecar

输出

**Language**

 - Added four languages: Italian, Portuguese (Brazil), Spanish (Mexico) and Chinese (Traditional)

**Bug fixes**

 - Fixed camera jittering for passenger sitting on the back of a motorcycle with sidecar
 - Fixed camera jittering for passenger sitting on the back of a motorcycle with sidecar

说明

  • (?:\h*\n){2,}匹配任意数量的水平空格字符,后跟换行符,两次或多次

其他方法

只是解释至少一种其他方法(并保留我的原始答案)

  • (?:\n(?:[^\S\n]*(?=\n))?){2,}匹配以下两次或更多次
    • \n匹配换行符
    • (?:[^\S\n]*(?=\n))?匹配以下零次或一次
      • [^\S\n]*匹配除\n以外的任何空格字符
      • (?=\n)确定以下内容的正面预测是换行符\n

答案 1 :(得分:0)

此方法比最佳答案短:

(\h*\n){2,}

Regex101