在把以前的一些python2的代码搬运到python3时,最麻烦的一些修改莫过于就是要把以前的print x类的语句全部改成函数式的print(x)的形式。想用replace来解决问题,好像又没办法解决右边的括号问题。直到我发现了pycharm的正则表达式替换工具,这个问题一下就迎刃而解了!下面说明用法:
在replace面板,勾选右边的regex选项,这样find和replace都将使用正则表达式匹配【允许了更多高级模式,当然也要注意转义字符的问题,一些正常模式下能匹配的模式在这里可能需要修改】。
然后,输入下图中的模式就可以解决print的修改问题了。
代码语言:javascript复制# find: print (S*)
# replace: print($1)
除了print问题,增减函数参数的问题也可以方便的用regex解决:
代码语言:javascript复制# find: open((?<file>S*),(?<rw>[^)].*))
# replace: codecs.open(${file},${rw},"utf-8")
代码语言:javascript复制# find: codecs.open((?<file>S*),(?<rw>S*),(?<arg3>[^)]*))
# replace: open(${file},${rw})