正規表現フィールドの 10 文字 (閉じ括弧 ")" ではなく、char5 で始まる正規表現グループを閉じていますか? では、これは char10 の閉じ括弧の後の文字に対してどのように機能するのでしょうか?
いいえ。かっこは、 と の両方(
で)
、文字クラス内のメタ文字ではありません。文字クラス内では、これらの文字だけ^-[]\
が特別な意味を持つことに注意してください。
キャレット ( ^
) とダッシュ ( -
) の場合、戦略的に char クラス内に配置すると、それらの特別な意味が失われます。キャレットが先頭以外に配置された場合はキャレット-
、先頭または末尾に配置された場合は です。
誰かが私のためにこの正規表現を分解できますか?
Java で必要な二重エスケープを削除してみましょう。これは次のようになり\\\\([{}()\\[\\]\\\\!&:^~-])
ます。
\\([{}()\[\]\\!&:^~-]) # the actual regex
これは次のように分類されます。
\\ # match literal backslash
( # open capture group
[ # open character class, matching any of
{}()\[\]\\!&:^~- # these characters: {}()[]\!&:^~-
] # close character class
) # close capture group
基本的には、バックスラッシュに一致し、その後にこれらの文字のいずれかが続き{}()[]\!&:^~-
、キャプチャ グループに入れます。このキャプチャ グループは置換 ( $1
) で使用され、一致全体 (バックラッシュ + 文字) が文字自体に置き換えられます。
つまり、これにより、これらの特殊文字から先頭のバックスラッシュが削除されます。