Regex fluent正则表达式的执行

Regex fluent正则表达式的执行,regex,api,fluent,Regex,Api,Fluent,我们尝试运行以下代码: fluentRegex包包含以下java文件: RegularExpressionBuilder.java RegularExpressionBuilderBase.java InvalidTokenException.java SingleCharMatcher.java 上述java文件中的代码取自以下给定链接: 代码: 此代码出现以下错误: C:\Users\Chitrangada\Documents\docs\DSL-Final yr project\code>

我们尝试运行以下代码: fluentRegex包包含以下java文件: RegularExpressionBuilder.java RegularExpressionBuilderBase.java InvalidTokenException.java SingleCharMatcher.java

上述java文件中的代码取自以下给定链接:

代码:

此代码出现以下错误:

C:\Users\Chitrangada\Documents\docs\DSL-Final yr project\code>javac CheckRegex.j ava CheckRegex.java:12: cannot find symbol symbol : method anyOf() location: class CheckRegex RegularExpressionBuilder regEx = regExp().atLeastOne(anyOf().singleChar (',').whitespace()); ^ CheckRegex.java:12: cannot find symbol symbol : method regExp() location: class CheckRegex RegularExpressionBuilder regEx = regExp().atLeastOne(anyOf().singleChar (',').whitespace()); ^ C:\Users\Chitrangada\Documents\docs\DSL Final yr project\code>javac CheckRegex.j 艾娃 java:12:找不到符号 符号:anyOf()方法 位置:类CheckRegex RegularExpressionBuilder regEx=regExp().atlestone(anyOf().singleChar (“,”).whitespace()); ^ java:12:找不到符号 符号:方法regExp() 位置:类CheckRegex RegularExpressionBuilder regEx=regExp().atlestone(anyOf().singleChar (“,”).whitespace()); ^ 2个错误

请尽快回复一个可能的解决方案

问候,


DSL团队

Java不允许使用免费函数,只允许使用方法。因此,对
anyOf()
regExp()
的调用是非法的。查看链接的源代码,
RegularExpressionBuilder
具有静态空值和方法。也许你的意思是:

RegularExpressionBuilder regEx =
    RegularExpressionBuilder.regExp().atLeastOne(
        RegularExpressionBuilder.anyOf().singleChar(',').whitespace()
    );

代码可能存在其他问题;这只是一个立即跳出来的方法。

您不能从类中调用这些方法。方法
regExp()
anyOf()
似乎是来自
RegularExpressionBuilder
类的静态方法。所以你会这样称呼他们:

RegularExpressionBuilder regEx = 
  RegularExpressionBuilder.regExp()
    .atLeastOne(RegularExpressionBuilder.anyOf().singleChar(',').whitespace());
因此,您似乎正在创建模式
[\s,]+
,这与冗长的代码片段相比要清晰得多,即使对于不熟悉regex的人,IMO也是如此

您可以通过导入以下内容从
RegularExpressionBuilder
导入所有静态方法:

import static com.googlecode.fluentregex.RegularExpressionBuilder.*;
然后你可以做:

还有一件事:你的
main
方法应该是静态的:

public static void main(String[] args) { 
    // ...
}

制表符和HTML不能很好地混合。可以将制表符转换为空格,也可以在每行的开头加上四个空格以保留缩进。
RegularExpressionBuilder regEx = 
    regExp().atLeastOne(anyOf().singleChar(',').whitespace());
public static void main(String[] args) { 
    // ...
}