2011-10-18 42 views
0

有一個正則表達式,看起來像這樣:我如何逃脫星號me.regexp

RE regex = new RE("([TtYy\\*])(?:([+-])([\\d]+)([dDmMhH]))?");

它應該匹配

*-30m 
T-60h 
T 
Y 

等。

但星號上的逃生行不通。我嘗試了一些組合,如單斜槓,將括號括起來。任何人有想法?

我使用me.regexphttp://code.google.com/p/regexp-me/

+0

正則表達式教練表示這對我工作的罰款。是否可能如何使用'match()'可能導致問題? – jprofitt

+0

添加圖書館的位置:http://code.google.com/p/regexp-me/ –

+0

@BrianG請參閱我的回答更新 –

回答

0

me.regexp.RE.java有文檔註釋:

重新接受完整的正則表達式語法如下描述:
人物

unicodeChar - 匹配任何相同的Unicode字符
\ - 用於引用元字符(如'*')
\\ - 匹配單個 '\' 字符
\ 0NNN - 匹配一個給定的八進制字符
\ XHH - 匹配一個給定的8位十六進制字符

所以單反斜線應該在這裏工作,或者lib中有問題。

UPDATE 我試圖圖案 「([TtYy \ *])?(?:([+ - ])([\ d] +)([dDmMhH]))」和文本 「* -30m」 和它完美的作品對我的8900模擬器上RIM 5.0

screen shot with regex-me test application

見代碼:

public final class MyScreen extends MainScreen 
    implements FieldChangeListener { 

    static final int INT_MAX_LEN = 200; 
    static final String STR_PATTERN = "Pattern:"; 
    static final String STR_TEXT = "Text:"; 
    static final String STR_RESULT = "Result:"; 
    static final String STR_RUN_TEST = "Run test"; 
    static final String STR_DEFAULT_PATTERN = 
     "([TtYy\\*])(?:([+-])([\\d]+)([dDmMhH]))?"; 
    static final String STR_DEFAULT_TEXT = "*-30m"; 

    EditField mPattern = new EditField(STR_PATTERN, STR_DEFAULT_PATTERN, 
      INT_MAX_LEN, Field.USE_ALL_WIDTH); 
    EditField mText = new EditField(STR_TEXT, STR_DEFAULT_TEXT, INT_MAX_LEN, 
      Field.USE_ALL_WIDTH); 
    LabelField mResult = new LabelField(STR_RESULT, Field.USE_ALL_WIDTH); 
    ButtonField mBtnRunTest = 
     new ButtonField(STR_RUN_TEST, Field.USE_ALL_WIDTH 
      | ButtonField.CONSUME_CLICK); 

    public MyScreen() { 
     add(mPattern); 
     add(mText); 
     add(mResult); 
     add(mBtnRunTest); 
     mBtnRunTest.setChangeListener(this); 
    } 

    public void fieldChanged(Field field, int context) { 
     if (field == mBtnRunTest) { 
      runTest(); 
     } 
    } 

    private void runTest() { 
     RE regex = new RE(mPattern.getText()); 
     String result = regex.match(mText.getText()) ? "TRUE" : "FALSE"; 
     mResult.setText(STR_RESULT + result); 
    } 
} 
+0

eclipse抱怨單斜槓和三斜槓 –