使用正则表达式从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
将其替换为第一个捕获的组,请参阅。 在base
R
中:

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"