正则表达式是我的弱点。
我正在寻找一种正则表达式或其他技术,可以让我读取任意字符串并确定它是否是有效的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?
最佳答案
/^\s*(public|private|protected)?\s+(static)?\s+\w+\s+\w+\s*\(.*?\)\s*$/m
匹配:
- 行首<^>
- 任意空白<\s*>
- 可选范围<(public|private|protected)?>
- 至少一个空格<\s+>
- 可选关键字 static <(static)?>
- 至少一个空格<\s+>
- 一个java标识符(你应该希望它是一个类名或文字)<\w+>
- 至少一个空格<\s+>
- Java 标识符(函数名称)<\w+>
- 打开括号<(>
- 任意参数(这里没有进行检查,因为一片困惑)<.*?>
- 执行惰性匹配
- 关闭括号<)>
- 任意空格<\s*>
- 行尾
这还远未完成,但应该可以满足您的需求。
关于java - 正则表达式匹配任何合法的java函数声明的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12392473/