java中方法的正则表达式
根据以下规则,我需要java方法的正则表达式:java中方法的正则表达式,java,regex,methods,Java,Regex,Methods,根据以下规则,我需要java方法的正则表达式: 无私人/公共或任何此类 仅void方法(无返回方法) 方法名称必须以字母开头,但可以包含“\”或数字 已获取方法名称的正则表达式:“([a-zA-Z])\\w*” 参数名称的正则表达式:“(124;[a-zA-Z])\\w*” 所以它就像: void name (parameters) { void不会更改,根据我提供的正则表达式命名,参数可以是final和int、string、char、double和boolean,但可以为空:() 非常感谢您
“([a-zA-Z])\\w*”
参数名称的正则表达式:“(124;[a-zA-Z])\\w*”
所以它就像:
void name (parameters) {
void不会更改,根据我提供的正则表达式命名,参数可以是final和int、string、char、double和boolean,但可以为空:()
非常感谢您的帮助:)不要滥用正则表达式来解析非正则语言 您在执行此任务时使用了错误的工具 相反,使用LALR(1)语言的解析器,就像Java语法一样 LALR解析器上的维基百科: 用于LALR语言的Java解析器生成器“CUP”: (使用诸如CUP之类的工具为您编写解析器要比使用诸如regexps之类的不合适工具自己编写解析器聪明得多) 猜猜杯子包括什么,例如: 示例:Java编程语言1.0到1.5的CUP语法 描述 这个正则表达式将在void之后提取name值和所有参数
^\s*void\s+(\s+)\s+[(]([^)]*)[)]\s*[{]
组
0组获得整个匹配
import java.util.regex.Pattern;
导入java.util.regex.Matcher;
类模块1{
公共静态void main(字符串[]asd){
String sourcestring=“void name(parameters){”;
Pattern re=Pattern.compile(“^\\s*void\\s+(\\s+)\\s+[(]([^)]*)[)]\\s*[{]”,Pattern.CASE不区分大小写| Pattern.MULTILINE | Pattern.DOTALL);
Matcher m=re.Matcher(sourcestring);
int mIdx=0;
while(m.find()){
对于(int-groupIdx=0;groupIdx阵列
(
[0]=>无效名称(参数){
)
[1] =>阵列
(
[0]=>名称
)
[2] =>阵列
(
[0]=>参数
)
)
您不需要正则表达式-您需要一个Java方法签名语法和一个lexer/parser生成器。ANTLR可以帮助您。我希望它作为正则表达式:)
import java.util.regex.Pattern;
import java.util.regex.Matcher;
class Module1{
public static void main(String[] asd){
String sourcestring = "void name (parameters) {";
Pattern re = Pattern.compile("^\\s*void\\s+(\\S+)\\s+[(]([^)]*)[)]\\s*[{]",Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
Matcher m = re.matcher(sourcestring);
int mIdx = 0;
while (m.find()){
for( int groupIdx = 0; groupIdx < m.groupCount()+1; groupIdx++ ){
System.out.println( "[" + mIdx + "][" + groupIdx + "] = " + m.group(groupIdx));
}
mIdx++;
}
}
}
$matches Array:
(
[0] => Array
(
[0] => void name (parameters) {
)
[1] => Array
(
[0] => name
)
[2] => Array
(
[0] => parameters
)
)