gpt4 book ai didi

Python正则表达式模式定义不包括字符

转载 作者:行者123 更新时间:2023-11-30 23:31:15 24 4
gpt4 key购买 nike

我正在用 Python 编写一个简单的 Java 源文件解析器。主要目标是提取方法声明列表。方法以 public|private|protected 开头(我假设不存在没有访问修饰符的友好方法,这在我的代码库中是可以接受的)并以 结尾>{ 但不能包含 ; (可以是多行)。

所以我当前的regex模式看起来像:

((public|private|protected).*\n*.*?({|;))

我不知道如何说整个匹配组不能包含 ; 所以我试图说给我一些以 { 结尾的东西>;,以先到者为准,非贪婪。然而,这不起作用,这里有一个失败的地方:

private static final AtomicInteger refCount = new AtomicInteger(0);

protected int getSomeVar() {

可以看到,方法声明之前有一个以private开头的变量声明,但没有{。因此,这作为一个匹配项返回,我希望将其作为两个匹配项,然后我将丢弃单独的非正则表达式逻辑中的变量声明。但如果您知道如何在 { 之前排除 ;,那也可以。

本质上,如何在 Python 正则表达式中判断某个字符(或子模式)不得出现在主模式中?

最佳答案

您可以使用否定字符类来表示“除(换行符或)左大括号或分号之外的任何字符”。

((public|private|protected)[^;{]*\n*[^;{]*?({|;))

关于Python正则表达式模式定义不包括字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20055275/

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