^
文字列の開始を意味します。文字列内の任意の場所で検索する必要があるため、削除する必要があります。
ああ、使わないで、代わりmatches
に使ってください。文字列全体がパターンに一致するかどうかをチェックし、文字列内のパターンを探します。find
matches
find
String code = "class Demo{public static void main(String[] args) {System.out.println(\"ABC\");}}";
Pattern p = Pattern.compile("[{]");
Matcher m = p.matcher(code);
System.out.println(m.find());
ただし、contains("{")
Rohit が述べたように、より単純になります。
String code = "class Demo{public static void main(String[] args) {System.out.println(\"ABC\");}}";
System.out.println(code.contains("{"));
置換を行いたい場合Matcher
は、replaceAll
機能がありますが、そうString
です。これにより、すべての前に改行が追加されます{
: (\\{
エスケープの代替方法です{
)
String code = "class Demo{public static void main(String[] args) {System.out.println(\"ABC\");}}";
System.out.println(code.replaceAll("\\{", "\n{"));
これであなたがどこに向かっているのかが正しければ、正規表現でコードのインデントを行うことはできません。これは増分/再帰的であり、正規表現では (うまく) 機能しません。これを行うには、文字列を手動で反復処理する必要があります。