我正在使用notepad++重新格式化一个Python脚本,但有些行没有缩进4(或8、12、16等)个空格。
因此,我需要匹配连续的前导空格(即每行开头的缩进),这些空格数量不是4的倍数,即1、2、3、5、6、7、9、10、11等空格。
例如:
或者 (@alpha bravo)
因此,我需要匹配连续的前导空格(即每行开头的缩进),这些空格数量不是4的倍数,即1、2、3、5、6、7、9、10、11等空格。
例如:
>>> a = 1 # match this, as there're 3 spaces at the beginning
>>> b = a # match this too, as indent by 7 spaces
>>> c = 2 # but not this, since it's indented exactly by 4 spaces
>>> d = c # not this either, since indented by 8 spaces
我能够用类似以下的方法匹配多个四个空格:
^( {16}| {12}| {8}| {4})
然后我尝试着用类似于以下内容来匹配相反的东西:
^[^( {16}| {12}| {8}| {4})]
但这个正则表达式只匹配空行或以字符开头的行,不符合我的要求。
我对正则表达式完全是新手,但我已经搜寻了数小时并没有找到符合要求的答案。我知道我可以使用所有非4的倍数数字进行匹配,但我希望有人能提供一个更简单的方法。
谢谢。
更新1
使用正则表达式 (@user2864740)
^(?:\s{4})*\s{1,3}\S
或者 (@alpha bravo)
^(?!(\s{4})+\S)(.*)
匹配非4的倍数缩进,以及带有4 (8, 16等)个空格和它们后面第一行非空字符的空行。
例如(在regex101.com上)
如何避免匹配上述示例中描述的这些情况?
^(?!\s{16}|\s{12}|\s{8}|\s{4}).*
- hjpotter92:set shiftround
,gg>G<G
,:wq
,完成。 - Eeveeshiftround
强制缩进命令始终缩进到制表符停止的倍数,即使该行之前未对齐。) - Eevee