質問: p.matcher(target); if (m.find()){ System.out.println("マッチします"); System.out.println("マッチした部分は " + m.group() + " です"); }else{ System.out.println("マッチしません"); } } } ```
回答: おそらく`¥`記号のせいでしょう。あなたがコードに貼り付けた`¥`はユニコードのU+00A5, 本来の円記号であり、これはエスケープ記号としては働きません。 あなたがアクセスされる環境で読めるように再現するのは難しいのですが、最近ではWindowsマシンでもフォントを選べば表示できたかと思いますので、ちょっとフォントの設定を変更してU+00A5の円記号`¥`とU+005Cのバックスラッシュ(Unicode用語だとREVERSE SOLIDUS)`\`が異なる表示になるようにしてみてください。(U+005Cは歴史的な経緯で日本語のインストールされたマシンでは円記号のように表示されることが多いですが、Unicode的にはバックスラッシュでないといけません。) Javaの文字列のエスケープ記号(Java内の正規表現のエスケープ記号も)はU+005Cの`\`の方ですので、あなたがご質問に書かれた文字では正常に動作しません。フォントの設定がうまくいかない場合には、以下の1行をコピペで貼り付けて`regex`の行と置き換えてみてください。 ``` String regex = "\\[.*\\]"; ```