使用正则表达式从R中的字符串中提取数字
我有这样一个字符串:使用正则表达式从R中的字符串中提取数字,r,regex,R,Regex,我有这样一个字符串: myString <- "[0.15][4577896]blahblahblahblahwhatever" 但这给了我][4577896 我想要的结果是:4577896 我怎样才能做到这一点呢?您可以使用 ^(?:[^\[\]]*\[[^\[\]]+\])[^\]\[]*\[([^\]\[]+).+ 并使用gsub将其替换为第一个捕获的组,请参阅。 在baseR中: myString <- "[0.15][4577896]blahblahblahblahwh
myString <- "[0.15][4577896]blahblahblahblahwhatever"
但这给了我][4577896
我想要的结果是:4577896
我怎样才能做到这一点呢?您可以使用
^(?:[^\[\]]*\[[^\[\]]+\])[^\]\[]*\[([^\]\[]+).+
并使用gsub
将其替换为第一个捕获的组,请参阅。
在baseR
中:
myString <- "[0.15][4577896]blahblahblahblahwhatever"
pattern <- "^(?:[^\\[\\]]*\\[[^\\[\\]]+\\])[^\\]\\[]*\\[([^\\]\\[]+).+"
gsub(pattern, "\\1", myString, perl = T)
# [1] "4577896"
myString你可以试试这个。(?不需要后面看
gsub(".*\\[(\\d+).*","\\1",myString)
[1] "4577896"
这里是另一个版本,它有最小的正则表达式或者没有正则表达式
qdapRegex::ex_between_multiple(myString, "[", "]")[[2]]
#[1] "4577896"
它提取[
和]
之间的所有子字符串,我们选择第二个括号之间的值。如果需要,您可以将其转换为数字或整数。使用stru extract
library(stringr)
str_extract(myString, "(?<=.\\[)([0-9]+)")
#[1] "4577896"
库(stringr)
str_extract(myString),(?使用:stringr::str_extract(myString),(?)?
library(stringr)
str_extract(myString, "(?<=.\\[)([0-9]+)")
#[1] "4577896"