我有一个名为thisline的字符串,我想在第一个整数之前删除所有字符。我可以使用命令
regexpr("[0123456789]",thisLine)[1]
确定第一个整数的位置。我如何使用该索引拆分字符串?
简短答案:
sub('^\D*', '', thisLine)
其中
-
^
匹配字符串的开头 -
\D
匹配任何非数字(与\d
相反) -
\D*
试图匹配尽可能多的连续非数字
我的个人喜好,完全跳过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)
您想要substring
函数。
或使用 gsub
一次拍摄:
> gsub('^[^[:digit:]]*[[:digit:]]', '', 'abc1def')
[1] "def"
您可能要包含第一个数字,可以用捕获来完成:
> gsub('^[^[:digit:]]*([[:digit:]])', '\1', 'abc1def')
[1] "1def"
或作为flodel,Alan指示,只需用空白替换"所有领先数字"即可。请参阅flodel的答案。