我有一个标题为thisLine的字符串,我想在第一个整数之前删除所有字符。我可以使用命令
regexpr("[0123456789]",thisLine)[1]
确定第一个整数的位置。如何使用该索引拆分字符串?
答案 0 :(得分:11)
答案简短:
sub('^\\D*', '', thisLine)
,其中
^
匹配字符串的开头\\D
匹配任何非数字(与\\d
相反)\\D*
尝试匹配尽可能多的连续非数字答案 1 :(得分:6)
您需要substring
功能。
或者使用gsub
一次性完成工作:
> gsub('^[^[:digit:]]*[[:digit:]]', '', 'abc1def')
[1] "def"
您可能希望包含第一个数字,可以通过捕获来完成:
> gsub('^[^[:digit:]]*([[:digit:]])', '\\1', 'abc1def')
[1] "1def"
或者像Flodel和Alan所说,只需用空白替换“所有前导数字”。见弗洛尔的答案。
答案 2 :(得分:6)
我的个人偏好,完全跳过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)