Python使用regex替换文件中符合特定格式的行。

问题描述 投票:0回答:1

我有一个文件,其中有以下几行内容,我想在python中写一个表达式,让我找到所有包含"[Path('*')]"模式的行,并将最后一个方括号替换为", RolesAllowed"。

 [Path('info')]
TInfoResource = class
 protected
 public
  [GET, Path('/build/'), Produces(TMediaType.TEXT_PLAIN)]
  function GetBuild: string;
  [GET, Path('/version/'), Produces(TMediaType.TEXT_PLAIN)]
  function GetVersion: string;
 end;

 [Path('helloworld')]
  THelloWorldResource = class
  protected
  public
    [GET, Produces(TMediaType.TEXT_PLAIN)]
    function SayHelloWorld: string;
  end;

我想在python中写一个表达式,让我找到所有包含"[Path('*')]"模式的行,然后用", RolesAllowed('admin')]"替换最后一个方括号。然而,我很难想出正确的正则表达式来实现这一点,这是我目前所拥有的,但它没有工作。

filename = "RAsistance"

#input file
fin = open(filename + ".pas", "rt")
fout = open(filename + "_MOD.pas", "wt")
for line in fin:
    if (re.search(r"^\[Path (*) \]", line)):
        fout.write(line.replace(']', ", RolesAllowed('admin')]"))

fin.close()
fout.close()

我对正则表达式完全是个新手,希望能得到帮助,谢谢!

python regex replace expression
1个回答
0
投票

你需要在你的模式中转义所有的regex控制字符,测试。此处:

^\[Path\s{0,}\(['*]+\)\s{0,}\]
© www.soinside.com 2019 - 2024. All rights reserved.