当前位置: 首页 > 知识库问答 >
问题:

带参数函数的Java regex

经正祥
2023-03-14
public static void main(String[] args) {
    
    String myRegex = "f\\((" + "," + "*)\\)"; //todo what regex?
    Pattern myPattern = Pattern.compile(myRegex);

    String function1 = "f(a_2,0)";
    String function2 = "f(a_2/a_7,10*a_3)"; 
    String function3 = "f(a_2-a_3,a_3+a_4)"; 

    List<String> functions = Lists.newArrayList(function1, function2, function3);
    for (String function : functions) {
        Matcher matcher = myPattern.matcher(function);
        while (matcher.find())
        {
            System.out.println(function + " match!");
        }
    }

}
f(a_2,0) match!
f(a_2/a_7,10*a_3) match!
f(a_2-a_3,a_3+a_4) match!

奖金f(a_3,(a_3+A_4)*4)可以捕捉所有的表达式,而不仅仅是(a_3,(a_3+A_4)?

共有1个答案

钱凌
2023-03-14

如果忽略嵌套,可以直接将需求映射到regex:

>

  • “参数有字母、数字和字符:+-*/”->[a-za-z0-9+\\-*/]+

    • [...]是字符类,因此[a-zA-Z0-9]表示“字母或数字”
    • [...]+因此表示“字母或数字的序列”
    • 您可以将+-*/添加到该类中,但是由于-具有特殊的含义,您需要将其放在字符类的前面或后面,或者将其转义
      null
    f\([a-zA-Z0-9+\-*/]+(,[a-zA-Z0-9+\-*/]+)*\)
    
      null
    String myRegex = "f\\([\\w\\s+*/\\-]+(,[\\w\\s+*/\\-]+)*\\)";
    

  •  类似资料:
    • 将函数传递给另一个函数的Scala示例缺少传递的函数(时间段)接受参数(x)的情况。 我怎样才能使上述代码工作? 编辑:我在oncepersecond中添加了一个x,以明确目标是传递整数。

    • 在 C++ 中,空参数表可以用 void 指定或括号中不放任何东西。下列声明: void print(); 指定函数 print 不取任何参数,也不返回任何值。图 3.18 演示了 C++ 声明和使用带空参数表的函数的方法。 编程技巧 3.11 虽然函数先定义后使用时可以省略函数原型,最好也提供函数原型。提供函数原型可以避免代码使用时受到函数定义顺序的限制。(这个顺序可能随程序的演变而改变)。 /

    • 问题内容: 是否可以通过以参数作为参数的javascript函数? 例: 问题答案: 使用“关闭”: 这将创建一个匿名的临时函数包装器,该包装器知道该参数并将其传递给实际的回调实现。

    • 但是,如果Terminal中没有提供,我不知道如何(或者是否能够)为其设置默认值。像这样简单的东西不起作用。这里的一个解决方案是根据的内容或大小在函数中设置变量。但我不知道有没有更好的办法做到这一点。 因此,我正在寻找一种方法来使用来自终端的参数调用一个函数,其中需要一个数字(在本例中为2),而其余的是可选的,并设置为默认值。

    • 我使用的是jdk8,需要创建一个以类名作为构造函数参数的Spring组件。但是,使用我当前的代码,我遇到了运行时错误: 这是我的博客类: 这就是我尝试创建类的方式: 我可以了解一下创建该组件的正确方法/这里出了什么问题吗?提前感谢。

    • 我对Azure平台还很陌生,还在学习SQL语言。我有一个关于在Azure平台上创建用户定义的内联表值函数(不需要参数)的问题。自从在我的SQL Server Management Studio上访问Azure平台以来,每当我使用系统内置函数GetDate()创建日志文件时,它都以UTC时区显示日期和时间,但我希望我的当前时区(复活节时区)比UTC晚4个小时。因此,我想知道是否有人可以指导我如何创建