29

*以下の例のと+演算子の違いを教えてください。

[<>]+ [<>]*

4

7 に答える 7

55

それらのそれぞれは量指定子であり、スター 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
于 2012-05-26T07:17:19.437 に答える
12

*はゼロ以上を+意味し、1 つ以上を意味します。したがって、違いは、空の文字列は 2 番目の式には一致しますが、最初の式には一致しないということです。

于 2012-05-26T05:27:33.830 に答える
7

+前のアトムの1 つまたは複数を意味します。( {1,})

*ゼロ以上を意味します。これは、角かっこ式で指定された文字に加えて、何にも一致しません。( {0,})

+拡張正規表現および Perl 互換正規表現で使用でき、基本 RE では使用できない ことに注意してください。*3 つの RE 方言すべてで使用できます。使用している方言は、おそらく使用している言語によって異なります。

ほとんどの場合、現在のオペレーティング システムでまだデフォルトで BRE になっているのはgrepand sed(どちらもオプションとして ERE 機能を備えています) と non-vim だけviです。

于 2012-05-26T05:27:33.833 に答える
4

それらは数量詞です。

  • +1 つまたは複数を意味します(一致が成功するために少なくとも 1 回発生)
  • *0 または多数を意味します(検索文字列の存在に関係なく、一致は成功します)
于 2012-05-26T05:31:18.527 に答える
3

*前の式の 0 個以上を意味します。

つまり、式はオプションです。

次のように整数を定義できます。

-*[0-9]+

つまり、オプションのマイナス記号の後に 1 つ以上の数字が続きます。

于 2012-05-26T05:32:44.380 に答える
2

[<>]+と同じです[<>][<>]*

于 2012-05-26T05:30:48.963 に答える