2016-11-14 331 views
0

我要檢索的第一個數字(在這裏 - > 344002)從一個字符串:R:如何從字符串中提取特定的數字?

string <- '<a href="/Archiv-Suche/!344002&amp;s=&amp;SuchRahmen=Print/" ratiourl-ressource="344002"' 

我最好找一個正則表達式,之後將查找號碼!和之前的&放大器。

所有我想出來的是這個,但這抓住了! (!344002):

regmatches(string, gregexpr("\\!([[:digit:]]+)", string, perl =TRUE)) 

任何想法?

+1

'子( '*?(\\ d +)*', '\\ 1',串)' – alistaire

回答

3

使用this regex

(?<=\!)\d+(?=&amp) 

使用此代碼:

regmatches(string, gregexpr("(?<=\!)\d+(?=&amp)", string, perl=TRUE)) 
  • (?<=\!)是回顧後,比賽開始之後!
  • \d+一個數字或匹配多個
  • (?=&amp)停止比賽,如果下一個字符是&amp
+1

你需要雙倍轉義\\ d +,我不認爲你需要逃避!在所有'regmatches(string,gregexpr(「(?<=!)\\ d +(?=&amp;」),string,perl = TRUE))''。但+1。 – thelatemail

+0

感謝您的快速幫助! – SimGeh

0
library(gsubfn) 
strapplyc(string, "!(\\d+)")[[1]] 

老答案]

測試此代碼。

library(stringr) 
str_extract(string, "[0-9]+") 

類似的問題&答案是在座

Extract a regular expression match in R version 2.10

+0

,這並不保證你得到的數字後, !並在& – rawr

+0

之前是的,你是對的。 – JKim

0

您可能捕獲數字( \d+)在!&amp之間並且通過regexec/regmatches得到它:

> string <- '<a href="/Archiv-Suche/!344002&amp;s=&amp;SuchRahmen=Print/" ratiourl-ressource="344002"' 
> pattern = "!(\\d+)&amp;" 
> res <- unlist(regmatches(string,regexec(pattern,string))) 
> res[2] 
[1] "344002" 

online R demo

相關問題