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,但可以为空:() 非常感谢您

根据以下规则,我需要java方法的正则表达式:

  • 无私人/公共或任何此类
  • 仅void方法(无返回方法)
  • 方法名称必须以字母开头,但可以包含“\”或数字
  • 已获取方法名称的正则表达式:
    “([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组获得整个匹配

  • 获取名称
  • 获取参数
  • Java代码示例:
    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
            )
    
    )