gpt4 book ai didi

java - 用于带有前面注释且没有类属性声明的 java 方法签名的 Python 正则表达式

转载 作者:行者123 更新时间:2023-12-01 05:05:00 25 4
gpt4 key购买 nike

我正在尝试在 python 中做一个正则表达式,将 java 文件中的每个方法签名与前面的注释相匹配(如果注释存在)。但同时,我不希望它与类属性声明匹配。我的代码是:

st:'''
/**
class attribute comments
*/
private Type class_attribute1;

private Type class_attribute2;

/**
* method1 comments.
*/
public Returnvalue method1(arguments OR no arguments) {
method1 body
}

private Returnvalue method2(arguments OR no arguments) {
method2 body
}'''

import re

print re.findall(r"([/][*].*?[*][/].*?(public|private|protected).*?{|\s(public|private|protected).*?{)", st, re.DOTALL)

但它还打印类属性注释和声明!

如有任何帮助,我们将不胜感激

最佳答案

1)您的正则表达式 (public|private|protected).* 太宽泛 - 它无法区分类属性(以 ; 结尾并且不能包含[(){}])和方法原型(prototype)(必须包含括号(..),然后是主体{...}和不能以 ; 结尾)所以只需编写一个更好的正则表达式即可。

2)此外,您的正则表达式将需要 capture groups 。那么不要使用 re.findall,使用匹配对象和 only extract the group you want, i.e. the actual declaration

关于java - 用于带有前面注释且没有类属性声明的 java 方法签名的 Python 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12848788/

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