R:如何找到字符串中的第一个数字

Adr*_*ian 7 regex r

    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)


G. *_*eck 7

1)sub尝试sub使用指示的正则表达式,它使用最短的字符串,直到数字,数字,然后跟随所有内容并用数字替换它:

sub(".*?(\\d).*", "\\1", string)
Run Code Online (Sandbox Code Playgroud)

赠送:

[1] "3"
Run Code Online (Sandbox Code Playgroud)

如果string是字符串向量,这也有效.

2)strapplyc也将是可以使用strapplycgsubfn在这种情况下,可以使用一个更简单的正则表达式:

strapplyc(string, "\\d", simplify = TRUE)[1]
Run Code Online (Sandbox Code Playgroud)

给出相同或使用它再次给出相同的答案,但如果string是一个字符串向量也有效:

sapply(strapplyc(string, "\\d"), "[[", 1)
Run Code Online (Sandbox Code Playgroud)