正则表达式:在 Notepad++ 中匹配不以 32 个空格开头的行

Regular Expression: Match lines not starting with 32 spaces in Notedpad++

Notepad++ 中,我试图匹配以 32 个连续空格开头的行 not

我已经有了匹配以 32 个连续空格开头的行的正则表达式:^ {32}.*$

我尝试使用 ^[^ {32}].*$^[^( {32})].*$ 得到相同的错误结果,例如不匹配只有 24 个空格的行。

  1. 匹配不到32spaces,后面是非space:http://www.regexr.com/3au2l

    ^ {0,31}[^ ]
    
  2. 使用否定先行匹配 "not 32 spaces":http://regexr.com/3au2o

     ^(?! {32})
    

在这两种情况下,如果需要,添加 .* 以匹配整行。

尝试使用否定前瞻。

(?!^ {32}[^ ]*$)^ +.*$

第一部分(括号内)的作用:匹配以 32 个空格开头的行,并将其排除。

最后,第二部分匹配以任意数量的空格开头的所有行。

直括号内的所有内容构成一个字符 class,所以

[^ {32}]

匹配(不)任何单个字符 {32}。 “(不是)”是因为第一个字符是否定的。 (这没有帮助。)

您正在寻找的是负前瞻:

^(?! {32}).+$

这会测试每一行,如果它后面没有至少 32 个空格,则选择它。要不仅匹配 32 个空格而且不匹配更多,请在第一个内使用另一个前瞻:

^(?! {32}(?! )).+$