繰り返し
?
0-1回
*
0回以上
+
1回以上
{最小,最大}
繰り返し範囲
+?
最短一致
?
0-1回
echo '見られる 見れる' | \
egrep --only-matching '見ら?れる'
見られる
見れる
*
0回以上
echo '嫌 嫌ぁ 嫌ぁぁ' | \
egrep --only-matching '嫌ぁ*'
嫌
嫌ぁ
嫌ぁぁ
+
1回以上
echo '嫌 嫌ぁ 嫌ぁぁ' | \
egrep --only-matching '嫌ぁ+'
嫌ぁ
嫌ぁぁ
{最小,最大}
繰り返し範囲
{5}
: 5回
{0,5}
: 0-5回
{5,}
: 5回以上
{,5}
: 5回以下
echo '嫌ぁ 嫌ぁぁ 嫌ぁぁぁぁだ' | \
egrep --only-matching '嫌ぁ{2,100}'
嫌ぁぁ
嫌ぁぁぁぁ
+?
最短一致
最長一致がデフォルト
+
や*
などの繰り返しの表現は、できるだけ長い文字列にマッチする
echo '嫌ぁぁぁぁぁぁだ' | \
egrep --only-matching '嫌ぁ+'
嫌ぁぁぁぁぁぁ
最短一致: Perlの正規表現
- なるべく短くマッチさせようとする扱い
- 繰り返し表現の後ろに
?
を付加
egrep
(grep -E
)ではできず、grep --perl-regexp
で行う
echo '嫌ぁぁぁぁぁぁだ' | \
grep --perl-regexp --only-matching '嫌ぁ+?'
嫌ぁ