将字符提取到" /"用R

时间:2015-08-02 22:23:24

标签: regex r

我试图在" /"之前和之后提取字符。使用R的字符。

例如,我可以使用以下内容获取标记:

s <- "hello/JJ world/NN"

# get the tags
sapply(s, function(x){gsub("([a-z].*?)/([A-z].*?)", "\\2", x)})

返回

"JJ NN"

然而,当我尝试在&#34; /&#34;之前提取字符时或者#34;令牌&#34;,使用以下内容:

sapply(s, function(x){gsub("([a-z].*?)/([A-z].*?)", "\\1", x)})

我得到了

"helloJ worldN"

我怎样才能获得&#34; hello world&#34;为什么标签的第一个字母在那里滑落?

1 个答案:

答案 0 :(得分:3)

我认为你在输出中保留这些字母的原因是你的正则表达式。 [A-Z](必须Z,我猜z是一个拼写错误 - 请参阅[A-Za-z] Shorthand class?)是正常的,但后面跟着.*?懒字点匹配组可以匹配0或无限字符而不是换行符尽可能少。所以,will match none

您需要+量词来匹配1个或多个字符并将其应用于字符类[a-zA-Z]

s <- "hello/JJ world/NN"
sapply(s, function(x){gsub("([a-zA-Z])/[a-zA-Z]+", "\\1", x)})

请参阅demo

我删除了第二组,因为你没有使用它。