[解決済み】Unclosed Character Class Error?
質問
以下はそのエラーです。
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 3
], [
^
at java.util.regex.Pattern.error(Pattern.java:1924)
at java.util.regex.Pattern.clazz(Pattern.java:2493)
at java.util.regex.Pattern.sequence(Pattern.java:2030)
at java.util.regex.Pattern.expr(Pattern.java:1964)
at java.util.regex.Pattern.compile(Pattern.java:1665)
at java.util.regex.Pattern.<init>(Pattern.java:1337)
at java.util.regex.Pattern.compile(Pattern.java:1022)
at java.lang.String.split(String.java:2313)
at java.lang.String.split(String.java:2355)
at testJunior2013.J2.main(J2.java:31)
この部分が問題を引き起こしているコードです。
String[][] split = new String[1][rows];
split[0] = (Arrays.deepToString(array2d)).split("], ["); //split at the end of an array row
このエラーの意味と、上のコードを修正するために必要なことは何ですか?
解決方法は?
TL;DR
あなたが欲しいのは
.split("\\], \\[")`
脱出 各角括弧 2回 - を特別な意味から取り除く必要がある場合、それぞれの文脈で1回ずつ行います。 正規表現 を最初に、そしてその中に Java文字列 次に
の使用を検討します。
Pattern#quote
が必要な場合は
全パターン
を解釈することができます。
文字通り
.
説明
String#split
が動作します。
正規表現
しかし
[
と
]
は正規表現上、標準的な文字ではありません:この文脈では特別な意味を持ちます。
を行うには
特別な意味から取り除く
で、単に
実際の角かっこと一致する
である必要があります。
エスケープ
これは、それぞれの前に
バックスラッシュ
- つまり
\[
と
\]
.
しかし
Java 文字列
,
\
も標準的な文字ではないので、以下のようにする必要があります。
もエスケープされます。
.
したがって、ちょうど分割するために
[
は、その
文字列
が使用されます。
"\\["
と取得しようとしている。
.split("\\], \\[")
賢明な代替案
ただし、この場合、意味的にだけでなく 正規表現で特定の数文字をエスケープする場合 という願いが込められています。 パターン全体が文字通りに解釈される そのための方法があるのですか?
Pattern#quote
が使われていることを意味する。
パターン内のメタキャラクタ[...]は特別な意味を持ちません。
(上記リンク先のJavadocより)
この場合、より感覚的で読みやすい、以下のようなものを使うことをお勧めします。
.split(Pattern.quote("], ["))
関連
-
[解決済み】リンクリストの負の値の数でnegativeCntrを代入する
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み】このコンパイルユニットは名前付きモジュールに関連しているため、名前付きパッケージeclipseを宣言する必要があります。
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み】"|="の意味は何ですか?(パイプ等号演算子)
-
[解決済み】JLabelのテキストを中央に配置するには?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] Javaクラスにおけるcanonical name、simple name、class nameの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】リンクリストの負の値の数でnegativeCntrを代入する
-
[解決済み】"実引数リストと形式引数リストの長さが異なる"
-
[解決済み】Android Studioでタスク :app:compileDebugJavaWithJavac の実行に失敗しました。
-
[解決済み】 JAVA 変数宣言はここではできない
-
[解決済み】メソッド本体がない、またはJavaで抽象的な宣言をする
-
[解決済み】純粋なJUnitテストにVisibleForTestingを使用する方法
-
[解決済み】Ubuntu: OpenJDK 8 - パッケージを見つけることができません。
-
[解決済み】Eclipseで「パッケージエクスプローラー」ビューが見つからない
-
[解決済み] "java.nio.charset.MalformedInputException" を避けるために、すべての包括的なCharset。入力の長さ= 1"?
-
[解決済み】フォルダに書き込もうとすると「java.nio.file.AccessDeniedException」が発生する件