2016-03-05 96 views
-2

假設我有一個字符串,像這樣:[R正則表達式的數字,後跟標點符號

x <- "i2: 32390. 2093.32: " 

我怎麼會回來,這將使我在哪裏了一些後面跟着:或的位置的矢量.後跟一個空格?

因此,對於這個字符串這將是

"2: ","0. ","2: " 

回答

0

您所需要的正則表達式就是'\\d[\\.:]\\s'。使用stringrstr_extract_all快速提取匹配:

library(stringr) 
str_extract_all("i2: 32390. 2093.32: ", '\\d[\\.:]\\s') 

產生

[[1]] 
[1] "2: " "0. " "2: " 

你可以使用它的r內置函數,它應該正常工作,以及。

什麼它匹配:

  • \\d數字,即數字
  • [ ... ]設置字符的範圍,以匹配相匹配
    • \\.相匹配的週期
    • :冒號匹配
  • \\s與空格相匹配。
+0

確實。儘管如此,我想保持它的基本性,並且不管上下文如何都逃離了這段時間。 – alistaire

+2

或使用基址'regmatches(x,gregexpr(「\\ d [:。] \\ s」,x))' –

+0

也是如此。我不確定原來是想要匹配任何空間還是隻是「」; ''\\ d [:.]''會比較窄。 – alistaire