gpt4 book ai didi

java - python中的正则表达式不匹配单词

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:53:26 25 4
gpt4 key购买 nike

我正在审查 java 代码,有很多类要检查,我做了一个正则表达式找到一个用 java 编写的方法,它不会在 finally block 中关闭 IO 流。

(?s)(?<=public|private|protected).<code>(?<!finally).*?.close\(\)\;</code>

出于某种原因,这不起作用,它甚至匹配那些最终阻塞的方法,所以下面也找到了

public testMethod(){
InputStream stream = .....
try{
//do something
} finally {
if(stream != null){
stream.close();
}
}
}

虽然只有下面应该匹配

public testMethod(){
InputStream stream = .....
//do something
if(stream != null){
stream.close();
}
}

有什么建议吗?

最佳答案

您的正则表达式可能应该是:(?s)(?<=public|private|protected)((?!finally).)*close\(\)\; .演示 regex101 .

解释:((?!finally).)*验证字符串的其余部分不包含 finally .

注意:为了涵盖所有情况,您可能还需要检查 close()实际上是在finally的 block 里面。您可以使用类似 (?s)(?<=public|private|protected)((?!finally[^}]*close\(\)\;).)*close\(\)\; 的表达式来完成.

关于java - python中的正则表达式不匹配单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37958984/

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