7

我有一个名为 thisLine 的字符串,我想删除第一个整数之前的所有字符。我可以使用命令

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

确定第一个整数的位置。如何使用该索引来拆分字符串?

4

3 回答 3

11

简短的回答:

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

在哪里

  • ^匹配字符串的开头
  • \\D匹配任何非数字(与 相反\\d
  • \\D*尝试匹配尽可能多的连续非数字
于 2012-12-22T02:13:06.640 回答
7

My personal preference, skipping regexp altogether:

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"

或者正如 florel 和 Alan 所指出的,只需将“所有前导数字”替换为空白即可。见弗洛德尔的回答。

于 2012-12-21T22:03:59.910 回答