我试图在" /"之前和之后提取字符。使用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;为什么标签的第一个字母在那里滑落?
答案 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
我删除了第二组,因为你没有使用它。