2011-04-09 109 views
0

的我們試圖運行下面的代碼: fluentRegex包包含以下java文件: RegularExpressionBuilder.java RegularExpressionBuilderBase.java InvalidTokenException.java SingleCharMatcher.java執行流利的正則表達式

代碼在上面的java文件 http://code.google.com/p/fluent-regex/source/browse/trunk/src/com/googlecode/fluentregex/?r=8

CODE:

import fluentRegex.*; 

import java.util.regex.Matcher; 

import java.util.regex.Pattern; 

public class CheckRegex 
    { 

public CheckRegex(){ 
String name = "Alen"; 
    RegularExpressionBuilder regEx =regExp().atLeastOne(anyOf().singleChar(',').whitespace()); 
    Pattern p = Pattern.compile(regEx.ex()); 
    Matcher expMatcher = p.matcher(name); 
    String st=regEx.ex(); 
    System.out.println(""+st); 
if (expMatcher.find()) 
{ 
    System.out.println("Month is: "); 
} 
else 
{ 
    System.out.println("else part!"); 
} } 
public void main(String[] args) 
    { 

    new CheckRegex(); 
}} 
從下面給定鏈路取

這段代碼是給以下錯誤:

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()); 
              ^

2個錯誤

請一個可能的解決方案很快就回來回覆

問候,

DSL隊

+0

製表符和HT ML混合不好。將製表符轉換爲空格,或者在開始時將每行縮進四個空格以保留縮進。 – outis 2011-04-09 07:01:01

回答

0

的Java沒有按」不允許自由功能,只允許使用方法。因此撥打anyOf()regExp()是非法的。查看鏈接的源代碼,RegularExpressionBuilder有靜態的空anyOf()regExp()方法。也許你的意思是:

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

可能還有其他代碼問題;這僅僅是立即跳出來的。

1

你不能只從你的班級調用這些方法。方法regExp()anyOf()似乎是來自RegularExpressionBuilder類的靜態方法。所以,你會打電話給他們這樣的:

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

所以,你似乎是在創建模式[\s,]+,這相比於長篇大論代碼段表現得更加明顯,甚至有人不熟悉正則表達式,IMO。

您可以通過進口導入從RegularExpressionBuilder所有靜態方法:

import static com.googlecode.fluentregex.RegularExpressionBuilder.*; 

,你可以然後執行:

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

還有一件事:你main方法應該進行靜態:

​​