gpt4 book ai didi

python - 正则表达式 Python 排除一些结果

转载 作者:太空宇宙 更新时间:2023-11-04 07:58:59 26 4
gpt4 key购买 nike

有一个测试字符串:

Module([Assign([Name('a', Store())], Num(2)), Assign([Name('b', Store())], Num(3)), Assign([Name('c', Store())], Str('Hello')), Assign([Name('x', Store())], BinOp(Name('a', Load()), Add(), Name('b', Load()))), Assign([Name('x', Store())], Name('a', Load())), Expr(Call(Name('print', Load()), [Name('a', Load())], [], None, None)), For(Name('i', Store()), Call(Name('range', Load()), [Num(10)], [], None, None), [Expr(Call(Name('print', Load()), [Name('a', Load())], [], None, None))], [])])

我正在尝试从中获取所有加载的变量名。我的正则表达式是

[a-z]+(?=', Load)

结果如下: result of regex如您所见,它还可以找到内置模块,例如 print、range。如何排除它们?要排除的值前面有

Call(Name(' 

我试过了

 (?=Call\(Name\(')[a-z]+(?=', Load)

但是没有成功。

我的代码是:

import re

test = '''Module([Assign([Name('a', Store())], Num(2)), Assign([Name('b', Store())], Num(3)), Assign([Name('c', Store())], Str('Hello')), Assign([Name('x', Store())], BinOp(Name('a', Load()), Add(), Name('b', Load()))), Assign([Name('x', Store())], Name('a', Load())), Expr(Call(Name('print', Load()), [Name('a', Load())], [], None, None)), For(Name('i', Store()), Call(Name('range', Load()), [Num(10)], [], None, None), [Expr(Call(Name('print', Load()), [Name('a', Load())], [], None, None))], [])])'''
print(re.findall(r"[a-z]+(?=', Load)", test))
print(re.findall(r"(?=Call\(Name\(')[a-z]+(?=', Load) ", test))

最佳答案

使用lookbehindword boundary

(?<!Call\(Name\(')\b\w+\b(?=', Load)

查看演示。

https://regex101.com/r/hdxlQ8/1

关于python - 正则表达式 Python 排除一些结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43840484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com