2

そのため、解析したい文字列があり、正規表現を機能させることができません。正規表現ガイドとしてhttps://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExpを使用しています。

正規表現を次の記号のいずれかに一致させたいと考えています。

+ - * % / 

私のコードは次のとおりです。入力文字列: D[1]+D[0]. true を出力する必要がありますが、 false を出力します。

String tmp = "D[1]+D[0]";
if(tmp.matches("[\\+\\-\\*\\/\\%]"))
    System.out.println("true");
else
    System.out.println("false");

何か案は?

4

2 に答える 2

4

これはmatches、文字列の一部ではなく、文字列全体を一致させたいためです。

角かっこ内の文字をエスケープする必要はありません。

String str = "D[1]+D[0]";
Pattern p = Pattern.compile("[+-/*]");
Matcher m = p.matcher(str);
if (m.find()) {
    System.out.println("Found: " + m.group());
}
于 2013-01-29T01:55:10.000 に答える
0

matches()入力全体と一致する必要がありますが、必要なのは.*両端に追加することだけです。

if (tmp.matches(".*[-+*/%].*"))

注:ハイフンが最初または最後である場合[]、間の文字はエスケープする必要はありません。

于 2013-01-29T02:23:52.777 に答える