グループ


() グループ

echo 'りんごパイ りんごジュース' | \
  egrep --only-matching 'りんご(ジュース)?'
りんご
りんごジュース
echo 'りんご
りんごジュース' | egrep '(りんご)$'
りんご

| OR

echo 'みかんジュース' | \
  egrep --only-matching '(りんご|みかん|いちご)ジュース'
みかんジュース

\番号 後方参照 (Backreferences)

例: (.+)語を話す\1人

「後方」のここでの意味

番号の使い方

グループが入れ子でないとき

echo "日本語を話す日本人
日本語を話す宇宙人
宇宙語を話す宇宙人" | egrep '(.+)語を話す\1人'
日本語を話す日本人
宇宙語を話す宇宙人

入れ子のグループ

echo "たけやぶやけた
たけやぶもえた" | egrep '((.)(.)(.))ぶ\4\3\2'
たけやぶやけた

(?:) キャプチャしないグループ (Non-capturing group)

echo "たけやぶやけた
たけやぶもえた" | \
  grep --perl-regexp '(?:(.)(.)(.))ぶ\3\2\1'
# 外側の()がキャプチャしないグループ
たけやぶやけた
echo 'ぎょぎょ' | sed -r --quiet '/(?:ぎょ)+/ p'
sed: -e expression #1, char 14: 無効な前方正規表現です