string = "ABC3JFD456"
Run Code Online (Sandbox Code Playgroud)
假设我有上面的字符串,我希望找到字符串中的第一个数字并存储其值.在这种情况下,我想存储值3(因为它是字符串中的第一个出现的数字).grepl("\\d", string)只返回一个逻辑值,但不会告诉我任何关于第一个数字的位置或内容的信息.我应该使用哪个正则表达式来查找第一个数字的值?
Dav*_*urg 11
基地R.
regmatches(string, regexpr("\\d", string))
## [1] "3"
Run Code Online (Sandbox Code Playgroud)
或使用 stringi
library(stringi)
stri_extract_first(string, regex = "\\d")
## [1] "3"
Run Code Online (Sandbox Code Playgroud)
或使用 stringr
library(stringr)
str_extract(string, "\\d")
## [1] "3"
Run Code Online (Sandbox Code Playgroud)
1)sub尝试sub使用指示的正则表达式,它使用最短的字符串,直到数字,数字,然后跟随所有内容并用数字替换它:
sub(".*?(\\d).*", "\\1", string)
Run Code Online (Sandbox Code Playgroud)
赠送:
[1] "3"
Run Code Online (Sandbox Code Playgroud)
如果string是字符串向量,这也有效.
2)strapplyc也将是可以使用strapplyc从gsubfn在这种情况下,可以使用一个更简单的正则表达式:
strapplyc(string, "\\d", simplify = TRUE)[1]
Run Code Online (Sandbox Code Playgroud)
给出相同或使用它再次给出相同的答案,但如果string是一个字符串向量也有效:
sapply(strapplyc(string, "\\d"), "[[", 1)
Run Code Online (Sandbox Code Playgroud)