我正在编写一个简单的Sublime Text插件,以修剪单词之间多余的,不必要的空格,但又不要触碰前导空格,以免弄乱Python格式。
我有:
[spaces*******are********here]if****not***regions***and**default_to_all:
并希望获得:
[spaces***are***still****here]if not regions and default_to_all:
思考
regions = view.find_all('\w\s{2,}\w')
view.erase(edit, region)
但它也删去了第一个和最后一个字母。
对于不匹配的前导空格,意味着您要在一个非空格字符后匹配多个空格(并用单个空格替换),因此可以(?<=\S) +(?=\S)
用单个空格“ ”替换。
说明:
(?<=\S) +(?=\S)
(?<= Positive look-behind, which means preceded by...
\S non-space character
) end of look-behind group
+ more than 1 space
(?=\S) Positive look-ahead, which means followed by...
non-space character
end of look-ahead group
这应该很容易理解。不过,您可能需要稍微调整一下以处理空间。
有关更多信息,请参见“正则表达式101 ”。
但是,正如关于您的意图的旁注所示:这将不是重新格式化代码的可靠方法。除了前导空格外,仍有许多重要的多重空格情况。最明显的一个是字符串文字内的空格。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句