正则表达式字符跨度

时间:2012-08-02 12:41:25

标签: regex r

我正在尝试更多地了解R中的正则表达式(通过一些教程工作)并且遇到了一些我无法工作的东西。我试图抓住2个字符之间的东西(包括那些字符并替换它们)。有人可以帮助我从这些正则表达式中获得所需的行为吗?

d <- c("xtfo_oin5h;lx", "6b_arin;7", "xin;7")
gsub("t.+?l", "HERE", b)
gsub("_.+?\\;", "HERE", b)

Desired outcomes for these two statements:
[1] "xHEREx"    "6b_arin;7" "xin;7"
[1] "xtfoHERElx" "6bHERE7"     "xin;7"

2 个答案:

答案 0 :(得分:4)

这似乎只是一个小的换位问题,在这种情况下,误导bd。 ; - )

gsub("t.+?l", "HERE", d)
gsub("_.+?\\;", "HERE", d)

按预期工作!

> gsub("t.+?l", "HERE", d)
[1] "xHEREx"    "6b_arin;7" "xin;7"    
> gsub("_.+?\\;", "HERE", d)
[1] "xtfoHERElx" "6bHERE7"    "xin;7" 

答案 1 :(得分:0)

也许

gsub("(.*)t.+?l(.*)", "\\1HERE\\2", d)

gsub("(.*)_.+?\\;(.*)", "\\1HERE\\2", d)

但问题有点不清楚