[解決済み] トークン化エラー: java.util.regex.PatternSyntaxException, dangling metacharacter '*'.
2022-01-29 02:23:58
質問
を使用しています。
split()
で区切られた文字列をトークン化する。
*
をこのフォーマットで表示します。
name*lastName*ID*school*age
%
name*lastName*ID*school*age
%
name*lastName*ID*school*age
このコードで「entrada.al」というファイルから読み込んでいます。
static void leer() {
try {
String ruta="entrada.al";
File myFile = new File (ruta);
FileReader fileReader = new FileReader(myFile);
BufferedReader reader = new BufferedReader(fileReader);
String line = null;
while ((line=reader.readLine())!=null){
if (!(line.equals("%"))){
String [] separado = line.split("*"); //SPLIT CALL
names.add(separado[0]);
lastNames.add(separado[1]);
ids.add(separado[2]);
ages.add(separado[3]);
}
}
reader.close();
}
そして、この例外が発生するんです。
スレッド "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0 で例外が発生しました。 *
私の推測では
*
の後、元のテキストファイルの年齢が原因です。どうすれば回避できるのでしょうか?
解決方法は?
いいえ、問題は
*
は正規表現では予約文字なので、エスケープする必要があります。
String [] separado = line.split("\\*");
*
は、"前の式のゼロまたはそれ以上"を意味します([...]を参照)。
Pattern
Javadocs
というように、前の式を与えていないため、分割式が不正になります。そのため、エラーになったのは
PatternSyntaxException
.
関連
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】エラー:配列または java.lang.Iterable のインスタンスに対してのみ反復処理を行うことができます。
-
[解決済み] java のクラス内のコンストラクタは、指定された型に適用できない
-
[解決済み】スレッド「main」での例外 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。0 [閉店]
-
[解決済み】指定された子にはすでに親がいます。先に子の親に対してremoveView()を呼び出す必要がある(Android)
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】-XX:MaxPermSizeは何をするのですか?
-
[解決済み] intellijが自動配線リポジトリにタイプのBeanが見つからないと不正確な発言をする件
-
[解決済み】intがnullであるかどうかを確認する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】popBackStack()とreplace()の操作はどう違うのですか?
-
[解決済み】Doubleはdereferencedできない?
-
[解決済み】"|="の意味は何ですか?(パイプ等号演算子)
-
[解決済み】「error: '.class' expected」の意味と修正方法について
-
[解決済み】メソッド本体がない、またはJavaで抽象的な宣言をする
-
[解決済み】keytoolエラー 鍵屋が改ざんされたか、パスワードが不正確だった場合
-
[解決済み] intellijが自動配線リポジトリにタイプのBeanが見つからないと不正確な発言をする件
-
[解決済み】Java: GZIPInputStreamの作成に失敗しました。GZIP形式ではありません
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。
-
[解決済み] "java.nio.charset.MalformedInputException" を避けるために、すべての包括的なCharset。入力の長さ= 1"?