正则表达式以剥离头字符到第一次遇到的数字



我有一个名为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的答案。

相关内容

最新更新