7

thisLineという名前の文字列があり、最初の整数の前のすべての文字を削除したいと思います。コマンドを使用できます

regexpr("[0123456789]",thisLine)[1]

最初の整数の位置を決定します。そのインデックスを使用して文字列を分割するにはどうすればよいですか?

4

3 に答える 3

11

簡単な答え:

sub('^\\D*', '', thisLine)

どこ

  • ^文字列の先頭に一致します
  • \\D数字以外のすべてに一致します(の反対です\\d
  • \\D*できるだけ多くの連続する非数字を一致させようとします
于 2012-12-22T02:13:06.640 に答える
7

私の個人的な好み、regexp完全にスキップ:

sub("^.*?(\\d)","\\1",thisLine)
#breaking down the regex
#^ beginning of line
#. any character
#* repeated any number of times (including 0)
#? minimal qualifier (match the fewest characters possible with *)
#() groups the digit
#\\d digit 
#\\1 backreference to first captured group (the digit)
于 2012-12-21T22:15:51.517 に答える
6

関数が必要ですsubstring

またはgsub、ワンショットで作業を行うために使用します。

> gsub('^[^[:digit:]]*[[:digit:]]', '', 'abc1def')
[1] "def"

その最初の桁を含めることができます。これは、キャプチャを使用して実行できます。

> gsub('^[^[:digit:]]*([[:digit:]])', '\\1', 'abc1def')
[1] "1def"

または、flodelとAlanが示すように、「先頭のすべての数字」を空白に置き換えます。flodelの答えを参照してください。

于 2012-12-21T22:03:59.910 に答える