正则表达式是我的弱点。
我正在寻找一个正则表达式或其他技术,允许我读取任意字符串并确定它是否是一个有效的java函数。
好:
public void foo()
void foo()
static protected List foo()
static List foo()
为:
public List myList = new List()
代码:
For String line : lines.
{
If(line.matches("(public|protected|private)*(/w)*(")
}
如果它是一个有效的java函数,是否有这样的正则表达式会返回true?
答案 0 :(得分:5)
/^\s*(public|private|protected)?\s+(static)?\s+\w+\s+\w+\s*\(.*?\)\s*$/m
匹配
这是完整的FAR,但应该符合您的需求。
答案 1 :(得分:3)
取决于你需要它的严谨程度,因为它作为一个正则表达式会变得相当复杂。
Java中方法声明的语法如下所示:
method_declaration
::=
{ modifier } type identifier
"(" [ parameter_list ] ")" { "[" "]" }
( statement_block | ";" )
并且您必须检查诸如具有多个修饰符但不重复相同的修饰符或多个范围修饰符之类的事情,还有类型和标识符等其他内容不是Java关键字之一。开始变得毛茸茸......我怀疑你是否想要编写自己的Java解析器。