我正在尝试查找和替换py程序中的某些函数调用。想法是向项目中找到的每个调用添加一些布尔参数。 我在互联网上寻找解决方案,因为我根本不了解正则表达式科学……对于正则表达式的人来说,这似乎是一种基本练习,但仍然如此。
就我而言,我在很多文件中都有这个电话:
myFunction("test")
我的目标是找到此呼叫并将其替换为:
myFunction("test", false)
您能帮我写正则表达式吗?
答案 0 :(得分:0)
请参阅:
import re
#Replace all white-space characters with the digit "9":
str = "The rain in Spain"
x = re.sub("\s", "9", str)
print(x)
答案 1 :(得分:0)
尝试以下命令:
sed -re 's/(myFunction)[[:space:]]*\([[:space:]]*("test")[[:space:]]*\)/\1(\2, false)/' SOURCE_FILENAME
如果您希望用更新的源文件替换现有的源文件,请写-i SOURCE_FILENAME
而不是SOURCE_FILENAME
。
这通过定义 pattern 来匹配您要更新的函数调用而起作用:
myFunction
(显然)与文本myFunction
相匹配; [[:space:]]
匹配任何空白字符,主要是空格和制表符。[[:space:]]*
匹配零个或多个空格字符。\(
和\)
与程序文本中的文字括号匹配; (
和)
是不匹配的正则表达式元字符,但("test")
匹配"test"
和 captures 匹配的文本以供以后使用。请注意,此模式使用(
和)
捕获了两件事。 ("test")
是其中的第二个。
现在让我们检查Sed命令's/.../.../'
的整体结构。 s
的意思是“替代”,因此's/.../.../'
是Sed的 substitution 命令。
在第一和第二个斜杠之间出现了我们刚刚讨论的模式。在第二个和第三个斜杠之间是替换文本,Sed使用该替换文本替换与该模式匹配的程序文本的任何行的匹配部分。在替换文本中,\1
和\2
是后向引用,用于放置先前使用(
和)
捕获的文本。
就这样。我不仅帮助您编写了正则表达式,而且还向您展示了正则表达式的工作原理,以便下次您可以编写自己的正则表达式。
答案 2 :(得分:0)