gpt4 book ai didi

java - 如何使用正则表达式匹配方法 block ?

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

举个例子。

 public static FieldsConfig getFieldsConfig(){
if(xxx) {
sssss;
}
return;
}

我写了一个正则表达式,"\\s*public\\s*static.*getFieldsConfig\\(.*\\)\\s*\\{"

它只能匹配第一行。但是如何匹配到方法的最后一个“}”呢?

帮帮我。谢谢。

编辑:未指定方法 {} 的内容。但是模式肯定是这样的,

  public static xxx theKnownMethodName(xxxx) {
xxxxxxx
}

最佳答案

我决定更进一步 ;)

这是一个正则表达式,可以为您提供不同捕获组中函数的修饰符、类型、名称和主体:

((?:(?:public|private|protected|static|final|abstract|synchronized|volatile)\s+)*)
\s*(\w+)\s*(\w+)\(.*?\)\s*({(?:{[^{}]*}|.)*?})

它处理嵌套大括号(@callOfCode (半)可能使用正则表达式;)和一组固定的修饰符。

它不能处理复杂的东西,比如注释中的大括号之类的东西,但它可以处理最简单的东西。

问候

Regex101 sample here

编辑:并回答您的问题 ;),您感兴趣的是捕获组 4。

编辑 2:如我所说 - 简单。但是您可以使处理更复杂的方法变得更复杂。 Here's an updated handling one more level of nesting .

((?:(?:public|private|protected|static|final|abstract|synchronized|volatile)\s+)*)
\s*(\w+)\s*(\w+)\(.*?\)\s*({(?:{[^{}]*(?:{[^{}]*}|.)*?[^{}]*}|.)*?})

您还可以在另一个级别...和另一个...但正如有人评论的那样 - 这不应该由正则表达式完成。然而,这处理简单方法。

关于java - 如何使用正则表达式匹配方法 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35912934/

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