簡體   English   中英

使用正則表達式從R中的字符串中提取數字

[英]Extracting numbers from string in R using regex

我有一個像這樣的字符串:

myString <- "[0.15][4577896]blahblahblahblahwhatever"

我需要提取第二個括號之間的數字。

目前,我正在嘗試使用此功能:

str_extract(myString, "\\]\\[(\\d+)")

但這給了我][4577896

我想要的結果是: 4577896

我怎樣才能做到這一點?

無需回頭

gsub(".*\\[(\\d+).*","\\1",myString)
[1] "4577896"

你可以試試看。 (?<=\\]\\[)(\\d+)

這是一個演示。 https://regex101.com/r/fvHW05/1

這是帶有最小或沒有正則表達式的另一個版本

qdapRegex::ex_between_multiple(myString, "[", "]")[[2]]
#[1] "4577896"

它提取[]之間的所有子字符串,然后選擇第二個括號之間的值。 您可以根據需要將其轉換為數字或整數。

您可以使用

^(?:[^\[\]]*\[[^\[\]]+\])[^\]\[]*\[([^\]\[]+).+

並使用gsub將其替換為第一個捕獲的組,請參見regex101.com上的演示 在基數R

myString <- "[0.15][4577896]blahblahblahblahwhatever"

pattern <- "^(?:[^\\[\\]]*\\[[^\\[\\]]+\\])[^\\]\\[]*\\[([^\\]\\[]+).+"
gsub(pattern, "\\1", myString, perl = T)
# [1] "4577896"

使用str_extract的選項

library(stringr)
str_extract(myString, "(?<=.\\[)([0-9]+)")
#[1] "4577896"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM