たとえば、次のコマンドを見てください。
find . -regex ".*\.\(cpp\|h\)"
これにより、ディレクトリ内のすべての.hおよび.cppファイルが検索されます。ピリオド文字「。」正規表現では通常、「任意の文字」を意味します。実際のピリオドのみに一致させるには、バックスラッシュ文字「\」を使用してエスケープする必要があります。
この場合、特別な意味を持つ文字を指定すると、それをエスケープして、その文字が表す実際の文字を取得する必要があります。
ここで、括弧と「or」バーをそれぞれ「(」、「)」、「|」の文字として扱います。これらには、正規表現のグループ化に使用される特別な意味もあります。ただし、特別な意味を得るには、バックスラッシュを使用して文字をエスケープする必要があります。バックスラッシュがなければ、文字はそれが表す実際の文字の意味を持ちます。
なぜ「。」「(」、「)」、および「|」とは異なる方法で処理されますか?