*
以下の例のと+
演算子の違いを教えてください。
[<>]+
[<>]*
それらのそれぞれは量指定子であり、スター quantifier( *
) は、前の式が 0 回以上一致できることを意味し{0,}
、plus quantifier( +
) は、前の式が少なくとも 1 回または複数回一致する必要があり、同じであることを示します。として{1,}
。
要約すると:
a* ---> a{0,} ---> Match a or aa or aaaaa or an empty string
a+ ---> a{1,} ---> Match a or aa or aaaa but not a string empty
*
はゼロ以上を+
意味し、1 つ以上を意味します。したがって、違いは、空の文字列は 2 番目の式には一致しますが、最初の式には一致しないということです。
+
前のアトムの1 つまたは複数を意味します。( {1,}
)
*
はゼロ以上を意味します。これは、角かっこ式で指定された文字に加えて、何にも一致しません。( {0,}
)
+
拡張正規表現および Perl 互換正規表現で使用でき、基本 RE では使用できない ことに注意してください。*
3 つの RE 方言すべてで使用できます。使用している方言は、おそらく使用している言語によって異なります。
ほとんどの場合、現在のオペレーティング システムでまだデフォルトで BRE になっているのはgrep
and sed
(どちらもオプションとして ERE 機能を備えています) と non-vim だけvi
です。
それらは数量詞です。
+
1 つまたは複数を意味します(一致が成功するために少なくとも 1 回発生)*
0 または多数を意味します(検索文字列の存在に関係なく、一致は成功します)*
前の式の 0 個以上を意味します。
つまり、式はオプションです。
次のように整数を定義できます。
-*[0-9]+
つまり、オプションのマイナス記号の後に 1 つ以上の数字が続きます。
[<>]+
と同じです[<>][<>]*