角かっこ式「[...]」でどの文字をエスケープする必要がありますか?

角かっこ式「[...]」でどの文字をエスケープする必要がありますか?

次の正規表現を使用すると、エスケープは[{-]必要ないようです{。そうですか?角かっこ式でエスケープする必要がない他の文字は何ですか?

ベストアンサー1

数十の異なる正規表現タイプがあることに注意してください。 POSIX規格は、少なくとも4つ(BRE、ERE、awk ERE、ex/ viBRE)、およびperlPCREvimなどのより多くの項目を指定します。ksh93

存在するPOSIX BREgrep/で使用sed)とむしろgrep -E(/sed -Eまたはbash1で使用[[ =~ ]])、内部角かっこ表現[...])、唯一の特殊文字は^(最初の文字の場合)、 ](最初の文字または次の文字以外の場合])、-(最初の文字、最後の文字または次の文字以外の場合^)、および一部、、...が[改行文字の一部です。ケースです。 、それ自体では特別ではなくても、正規表現構文の正規表現は、正規表現を区切るなど、正規表現を使用するユーティリティで特別な場合が多いです。[.x.][:class:][=e=]grep

\これは特別ではなく、理論的に文字をエスケープしたり、\tTABなどを指定したりするためには使用できません。

[\-~]\からまでのさまざまな文字と一致するように設計されています~-またはを一致させるには、またはを~使用します。必要が最初に来るか、最後に来て、必要が最初に来て、後ろまたは後に続いてはいけないことを忘れないでください。[~-][-~]-][.=:

{それは決して特別ではありませんが-、あなたのように最後の位置にいるときはそうではありません。

[\t]BREとEREは合計一致またはが必要ですが、複数の[t\]ユーティリティがその要件を無視するため、これに依存しません。 orを一致させるには、orを使用してください。\t[\\t][\\t]\t

たとえば、GNUでは、sedその環境を除いて代わりにsed 's/[\t]//'TABを削除します。\t$POSIXLY_CORRECT


¹興味深いことに、引用されたようにtrueをbash返すために使用され、正規表現はエスケープを必要としないエスケープポイントを試みるため、正規表現エンジンを呼び出し、4.4はまだ同じ理由でtrueを返しません。[[ '\' =~ ['.'] ]].[\.][[ '\' =~ [^]'.'] ]]

おすすめ記事