私は正規表現(および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("\\{$");