[解決済み] Javaで正規表現を理解する: split("\t") vs split("\t") - when do they both work, and when should be used in Java
質問
最近、自分のコードで正規表現を正しく使っていなかったことがわかりました。タブで区切られた文字列の例では
str
を使用していました。
str.split("\t")
. 今になって、これは間違っていて、タブを正しく一致させるためには
str.split("\\t")
.
しかし、この事実を偶然にも発見したのは、別の用件で正規表現のパターンを探していたときでした。ご存知のように、欠陥のあるコード
split("\t")
しかし、タブ文字にマッチする正規表現を宣言する方法が間違っているのなら、なぜうまくいくのだろうかと混乱しています。したがって、Eclipseにコードをコピーするだけでなく、Javaで正規表現がどのように処理されるかを実際に理解するために、そしてなぜそれが動作するのかをあまり気にしないために、この質問をしました。
同じように、タブ区切りだけでなく、カンマ区切りのテキストに出会ったことがあります。より明確に言うと、私が解析しているタブ区切りのリストには、時々、次のような "複合" アイテムが含まれます。
item1,item2,item3
ということで、単純化するために、別々の要素として解析したいと思います。この場合、適切な正規表現は次のようになります。
line.split("[\\t,]")
それとも、ここも間違っているのでしょうか?
よろしくお願いします。
どのように解決するのですか?
を使用する場合
"\t"
は、その
エスケープシーケンス
\t
は、Javaでは文字U+0009に置き換えられます。を使う場合
"\\t"
の場合、エスケープシーケンス
\\
で
\\t
をJavaで置き換えると
\
であり、結果として
\t
によって解釈されます。
正規表現
パーサーは文字 U+0009 として扱います。
ですから、どちらの表記も正しく解釈されることになります。ただ、対応する文字に置き換えたときが問題なのです。
関連
-
undefinedeclipse エラー。この行に複数のアノテーションが見つかりました: - 文字列を型解決に解決できない
-
コンストラクタの呼び出しは、コンストラクタのエラー理解の最初のステートメントである必要があります。
-
linux run jarfile Invalid or corrupt jarfile error.
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
[解決済み] ThreadLocal変数はいつ、どのように使用すればよいですか?
-
[解決済み] Microsoft Excelで正規表現(Regex)をセル内とループの両方で使用する方法
-
[解決済み] Java の assert キーワードは何をするのか、そしていつ使うべきなのか?
-
[解決済み] JavaでequalsとhashCodeをオーバーライドする際に考慮すべき事項は?
-
[解決済み] なぜJava 8のOptionalは引数で使ってはいけないのか
-
[解決済み】Java Regexのmatches()とfind()の違いについて
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
java の例外が発生しました java
-
この行に複数のマーカーがある - HttpServletResponseが型エラーに解決できない
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
プロローグでのコンテンツは禁止されています
-
サーブレットクラスのインスタンス化エラーの解決法
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
アイデア Springboot Web プロジェクトを jar にパッケージ化する場合、Error: 無効または破損した jarfile x.jar 解決策
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について
-
[解決済み] Java文字列を改行で分割する