私は正規表現(およびJava)に慣れていないので、これはおそらく簡単な質問です。行末の文字{を一致させようとしています。私の試みは単純にこれです:
row.matches("{$")
row.matches("\{$")
しかし、両方ともただ与える
スレッド「メイン」の例外java.util.regex.PatternSyntaxException:不正な繰り返し
私は何が間違っているのですか?
row.matches("^.*\\{$");
{はメタ文字なので、単に{をエスケープする必要があります。Javaは特別なコンテキスト(\ n、\ rなど)用に1つの円記号を予約しているため、パターン用に1つの円記号を生成するには2つの円記号が必要です。したがって、
\\{
適切に評価します
\{
これだけでなく、matchesメソッドは、サブセットだけでなく、文字列全体が一致するかどうかを確認します。したがって、^.*一部
{文字は正規表現の特殊文字であるため、エスケープする必要があります
row.matches("\\{$")
アングルブラケットの脱出は機能しましたか?
のように\\{$
に対してそれを試した
hello world{
whatever{
hello{dontmatch
}
}
一致world{しましたが、一致しwhatever{ませんでしたhello{dontmatch
をでエスケープする必要がありますが{、が特殊文字として読み取られる\のを防ぐために(改行の場合のように)、次の結果を追加してもエスケープする必要があります。\{\n\\
row.matches("\\{$");