有一個正則表達式,看起來像這樣:我如何逃脫星號me.regexp
RE regex = new RE("([TtYy\\*])(?:([+-])([\\d]+)([dDmMhH]))?");
它應該匹配
*-30m
T-60h
T
Y
等。
但星號上的逃生行不通。我嘗試了一些組合,如單斜槓,將括號括起來。任何人有想法?
我使用me.regexp
從http://code.google.com/p/regexp-me/
有一個正則表達式,看起來像這樣:我如何逃脫星號me.regexp
RE regex = new RE("([TtYy\\*])(?:([+-])([\\d]+)([dDmMhH]))?");
它應該匹配
*-30m
T-60h
T
Y
等。
但星號上的逃生行不通。我嘗試了一些組合,如單斜槓,將括號括起來。任何人有想法?
我使用me.regexp
從http://code.google.com/p/regexp-me/
在me.regexp.RE.java有文檔註釋:
重新接受完整的正則表達式語法如下描述:
人物unicodeChar - 匹配任何相同的Unicode字符
\ - 用於引用元字符(如'*')
\\ - 匹配單個 '\' 字符
\ 0NNN - 匹配一個給定的八進制字符
\ XHH - 匹配一個給定的8位十六進制字符
所以單反斜線應該在這裏工作,或者lib中有問題。
UPDATE 我試圖圖案 「([TtYy \ *])?(?:([+ - ])([\ d] +)([dDmMhH]))」和文本 「* -30m」 和它完美的作品對我的8900模擬器上RIM 5.0
見代碼:
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);
}
}
eclipse抱怨單斜槓和三斜槓 –
正則表達式教練表示這對我工作的罰款。是否可能如何使用'match()'可能導致問題? – jprofitt
添加圖書館的位置:http://code.google.com/p/regexp-me/ –
@BrianG請參閱我的回答更新 –