我目前正在尝试通过在等号周围添加空格来提高某些python脚本的可读性。例如,当前任务如下所示:
foo=4
bar[index]=4
我想将其更改为:
foo = 4
bar[index] = 4
我已经找到以下记事本++的已回答问题:搜索并替换为正则表达式,这建议在“查找内容”中使用以下正则表达式应该起作用:
(?<=[\w\]\)])=(?=\w)
Notepad ++可以正确找到所有对应的等号,但是无论我尝试用哪种方式替换它们,它都不会替换它们。我现在正在使用:
([\w\]\)])=(\w)
与“查找内容”一起:
\1 = \2
在“替换为”中,即可完成工作。但是,我不明白为什么初始正则表达式不起作用,尤其是在链接的问题中,正则表达式(相当于它的东西)被标记为正确的。在Notepad ++ 6.6.1或6.6.8中均不起作用。我对正则表达式不是很熟悉,这是我第一次在Notepad ++中使用它们,因此,我将不胜感激。
编辑:澄清一下:在任何尝试中,我都没有将“替换为”字段保留为空,而是始终用=
或其他字符串填充它。对于最初的正则表达式,我没有使用\1 = \2
。
但是我认为我已经确定了问题所在。到目前为止,我已经尝试了所有建议,但似乎都没有用。但是,一旦我单击“全部替换”而不是“替换”,Notepad ++确实正确替换了所有内容,即使使用我的初始正则表达式也是如此。我不确定这是否是预期的行为。
该问题的可接受答案仅包含搜索表达式。问题提问者留下了一条评论,指出替换字符串应保留为空。所做的是删除匹配的内容。
您要在此处执行的=
操作不是要完全删除运算符(因为这将彻底破坏脚本!),而只是对它们进行空格填充。
您原始的正则表达式的作用:
(?<=[\w\]\)])=(?=\w)
找到任何=
字符
\w
,]
或者)
,如在(?<=[\w\]\)])
,和\w
,如(?=\w)
。的(?<=)
和(?=)
部分是回顾后和向前断言分别不捕捉组。由于您原来的正则表达式无法捕获任何内容,因此替换\1 = \2
为预期效果不理想。
在您的正则表达式中:
([\w\]\)])=(\w)
在?<=
和?=
令牌被删除,这使得两个括注捕捉组。这允许\1 = \2
反向引用起作用,并在第一个捕获,=
符号和第二个捕获之间适当插入空格。
附带说明一下(因为您已经找到了可行的解决方案),仍然可以使原始正则表达式正常工作,但是替换字符串应仅用=
空格包围。经过lookbehind和lookahead断言测试的内容实际上不会被拾取-匹配的唯一字符是=
符号本身-因此在您替换时它不会消失。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句