0

文字列で「/*」を区切りたい:

例えば

String str="6666 /* 555 / 777 * ttt";

// And result should be
result= 6666 ,  555 / 777 * ttt

私はでプログラムを書きました

String[] line_split=line_str.split("/*");

そして、私はこのエラーを受け取ります:

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0 *

誰かが私に解決策を持っていますか?

4

3 に答える 3

5

String.splitRegex分割にかかります。Andは特別な意味を持つ*メタ文字です- その前にあるパターンの一致。Regex0 or more

あなたはそれをエスケープする必要があります: -

String[] line_split=line_str.split("/\\*");
于 2012-11-07T19:59:50.493 に答える
2

エラーメッセージは次のとおりです。

インデックス0の近くのぶら下がっているメタ文字'*'*

*は正規表現のメタ文字であるため、でエスケープする必要があります\\


このような状況では、Patternクラスを使用して次のように正規表現を作成できます。

String regex = Pattern.quote("/*");
System.out.println(regex);

出力は

\ Q / * \ E

これはあなたの正規表現です。

于 2012-11-07T20:00:34.553 に答える
0

そうです、それはメタです。ただし、問題の式は/* 有効な正規表現です。これは実際には機能しますが、期待される結果は得られません。

System.out.println(Arrays.toString("aoeuaoue".split("/*")));

したがって、問題を再現するコードを貼り付けていません。しかし、置き換える実際の文字列は似たようなものだと思いますが、正規表現としては違法です。

于 2012-11-07T20:55:45.580 に答える