2

これは、より大規模で複雑なデータセットの最小限の例であり、何かに頭を悩ませようとしているだけです。

> grep("X10\\.1+",c("X10.10","X10.11","X10.12"))
[1] 1 2 3

2'+'は'前の要素の1つ以上'であると想定されているので、今は返されるだけだと思っていたでしょう。期間を逃れること(私は対処しなければならないので、例ではそれを維持したい)が問題を引き起こしている可能性があると思いました。

> grep("X101+",c("X1010","X1011","X1012"))
[1] 1 2 3

それで、「+」の機能についての私の理解は間違っていますか?

結論:

@Jamesに感謝します。したがって、私の理解では、+は「前の要素のちょうど1つ以上」である実際の意味とは対照的に、「前の要素のもう1つ以上」でした。

11+は、私が考えていたことを実行していました(最初の1の後に1つ以上の1が追加されているなど)。乾杯

4

2 に答える 2

6

1をいくつでも付けた後、文字列の末尾に一致させる必要があることを示す必要があります。あなた$はこれを行うために使用します。

grep("X10\\.1+$",c("X10.10","X10.11","X10.12"))
[1] 2

同様に、たとえば既存の正規表現と一致するのではなく^、一致の開始を制限する場合は、文字列の開始と一致します。X10.PX10.

于 2012-12-13T01:33:02.443 に答える
2

この場合、前の要素は数字「1」であり、3つの要素すべてのその位置にあります。'+'の事前の理解は正しいです。

于 2012-12-13T01:35:28.337 に答える